s/BenchmarkSuite.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 23 Jun 2013 02:37:07 +0100
changeset 90 af50db15da25
parent 12 3a7ebd3da52f
child 98 4266d340e722
permissions -rw-r--r--
Added name, id and description to benchmark annotation. These are also written in JSON output. If not present, default values are suppplied.
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:''
12
3a7ebd3da52f Class categories renamed from CalipeL/S to CalipeL-S...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
     7
	category:'CalipeL-S-Core'
0
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|
90
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    20
            (BenchmarkInstance isBenchmarkMethod: method) 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>"
90
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    29
    "Modified: / 23-06-2013 / 01:51:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    30
!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    31
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    32
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
    33
    ^ BenchmarkInstance class:class selector:benchmark
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    34
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    35
    "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
    36
!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    37
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    "return an initialized instance"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    ^ self basicNew initialize.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
2
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    44
!BenchmarkSuite methodsFor:'adding & removing'!
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    45
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    46
addBenchmark: aBenchmarkInstanceOrBenchmarkSuite
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    47
    benchmarks add: aBenchmarkInstanceOrBenchmarkSuite
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    48
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    49
    "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
    50
! !
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    51
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
!BenchmarkSuite methodsFor:'initialization'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
initialize
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    "Invoked when a new instance is created."
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    benchmarks := Set new.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    "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
    60
    "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
    61
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!BenchmarkSuite methodsFor:'running'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
run
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ^self run: BenchmarkResult new.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "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
    69
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
run: aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    ^self run: aBenchmarkResult with: Dictionary new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "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
    75
    "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
    76
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    benchmarks do:[:each|
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        each run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    ^aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "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
    85
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
runWith: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ^self run: BenchmarkResult new with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "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
    91
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!BenchmarkSuite class methodsFor:'documentation'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
version_HG
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    ^ '$Changeset: <not expanded> $'
5
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
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   100
version_MC
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   101
    ^ '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
   102
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103