s/BenchmarkSuite.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 28 May 2013 20:24:18 +0100
changeset 2 e48eb0a3f5a3
parent 0 c86831d0f7e7
child 4 2e2258b6bf90
permissions -rw-r--r--
Added benchmark runner.
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:[
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    21
                suite addBenchmark: (BenchmarkInstance class: class benchmark: selector)
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
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    31
class: class benchmark: benchmark
e48eb0a3f5a3 Added benchmark runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    32
    ^BenchmarkInstance class: class benchmark: benchmark
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
    "/ please change as required (and remove this comment)
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
    "/ super initialize.   -- commented since inherited method does nothing
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
    "Modified: / 27-05-2013 / 18:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
!BenchmarkSuite methodsFor:'running'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
run
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    ^self run: BenchmarkResult new.
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
    "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
    70
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
run: aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    ^self run: aBenchmarkResult with: Dictionary new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    "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
    76
    "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
    77
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    benchmarks do:[:each|
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
        each run: aBenchmarkResult with: aDictionary
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
    ^aBenchmarkResult
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
    "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
    86
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
runWith: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ^self run: BenchmarkResult new with: aDictionary
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
    "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
    92
! !
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
!BenchmarkSuite class methodsFor:'documentation'!
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
version_HG
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    ^ '$Changeset: <not expanded> $'
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100