s/BenchmarkSuite.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 05 Jun 2013 10:45:29 +0100
changeset 6 25b264cec44e
parent 5 8669edf62d9b
child 12 3a7ebd3da52f
permissions -rw-r--r--
Added parameter to BenchmarkResult to run each benchmark multiple times. The BenchmarkOutcome keeps all times. Also, BenchmarkInstance>>benchmark renamed to selector.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:calipel/s' }"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#BenchmarkSuite
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'benchmarks'
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'CalipeL/S-Core'
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!BenchmarkSuite class methodsFor:'instance creation'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    13
class: class 
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    14
    | suite current |
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    15
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    16
    suite := self new.
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    17
    current := class.
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    18
    [ current notNil ] whileTrue:[
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    19
        current selectorsAndMethodsDo:[:selector :method|
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    20
            (method pragmaAt:#benchmark) notNil ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    21
                suite addBenchmark: (BenchmarkInstance class:class selector:selector)
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    22
            ].
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    23
        ].
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    24
        current := current superclass.
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    25
    ].
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    26
    ^suite
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    27
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    28
    "Created: / 28-05-2013 / 19:49:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    29
!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    30
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    31
class:class selector:benchmark 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    32
    ^ BenchmarkInstance class:class selector:benchmark
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    33
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    34
    "Created: / 28-05-2013 / 19:46:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    35
!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    36
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    "return an initialized instance"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    ^ self basicNew initialize.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    43
!BenchmarkSuite methodsFor:'adding & removing'!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    44
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    45
addBenchmark: aBenchmarkInstanceOrBenchmarkSuite
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    46
    benchmarks add: aBenchmarkInstanceOrBenchmarkSuite
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    47
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    48
    "Created: / 28-05-2013 / 19:48:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    49
! !
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    50
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!BenchmarkSuite methodsFor:'initialization'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
initialize
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Invoked when a new instance is created."
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    benchmarks := Set new.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    "Modified: / 27-05-2013 / 18:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
2e2258b6bf90 Removed Smalltalk/X specific eol-comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    59
    "Modified (comment): / 31-05-2013 / 00:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!BenchmarkSuite methodsFor:'running'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
run
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    ^self run: BenchmarkResult new.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    "Created: / 27-05-2013 / 19:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
run: aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ^self run: aBenchmarkResult with: Dictionary new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Created: / 27-05-2013 / 19:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Modified: / 28-05-2013 / 00:02:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    benchmarks do:[:each|
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        each run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    ^aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 27-05-2013 / 22:18:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
runWith: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ^self run: BenchmarkResult new with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    "Created: / 27-05-2013 / 22:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!BenchmarkSuite class methodsFor:'documentation'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
version_HG
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    ^ '$Changeset: <not expanded> $'
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    97
!
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    98
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    99
version_MC
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   100
    ^ 'CalipeL_S-Core-JanVrany.7 5c300a20-c9d7-11e2-a959-606720e43e2c 2013-05-31T10:49:17 JanVrany'
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102