s/BenchmarkInstance.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 05 Jun 2013 10:45:29 +0100
changeset 6 25b264cec44e
parent 5 8669edf62d9b
child 11 88ec277d733a
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:#BenchmarkInstance
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
     4
	instanceVariableNames:'instance benchmarkSelector setUpSelector1 setUpSelector2
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
     5
		tearDownSelector1 tearDownSelector2 warmUpSelector1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
     6
		warmUpSelector2'
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
     7
	classVariableNames:'MillisecondsTime'
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'CalipeL/S-Core'
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
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!BenchmarkInstance class methodsFor:'instance creation'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    15
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
    16
    ^ self new class:class selector:benchmark
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 27-05-2013 / 19:04:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    21
!BenchmarkInstance class methodsFor:'class initialization'!
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    22
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    23
initialize 
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    24
   "Test for Smalltalk/X"
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    25
    ((Smalltalk respondsTo: #isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    26
          "Use slow Smalltalk at: because Pharo does not allow to accept code with
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    27
            undefined global. Somewhat stupid!! "
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    28
        MillisecondsTime := [ (Smalltalk at: #OperatingSystem) getMillisecondTime ].
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    29
          ^self
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    30
    ].
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    31
   "Test for Squeak/Pharo"
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    32
   (Smalltalk at: #SmalltalkImage ifAbsent: [nil]) notNil ifTrue:[
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    33
        MillisecondsTime := [ Time millisecondClockValue ].
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    34
          ^self 
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    35
   ].
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    36
   self error:'Unssuported platform'
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    37
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    38
   "
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    39
   BenchmarkInstance initialize
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    40
   "
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    41
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    42
    "Created: / 31-05-2013 / 12:02:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    43
! !
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    44
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
!BenchmarkInstance methodsFor:'accessing'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    47
instance
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    48
    ^ instance
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    51
selector
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    52
    ^ benchmarkSelector
0
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
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    55
!BenchmarkInstance methodsFor:'initialization'!
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    57
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
    58
    self instance:class new selector:benchmark
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    "Created: / 27-05-2013 / 19:04:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    63
instance:anObject selector:aSelector 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    64
    | benchmarkMethod  annotation |
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    65
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    66
    (anObject respondsTo:aSelector) ifFalse:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    67
        self 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    68
            error:'Object does not respond to benchmark (no ' 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    69
                    , anObject class printString , '>>' 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    70
                    , aSelector storeString.
0
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
    instance := anObject.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    73
    benchmarkSelector := aSelector.
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    74
    instance class methodDictionary 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    75
        keysAndValuesDo:[:selector :method | 
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    76
            method numArgs == 0 ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    77
                (method pragmaAt:#setup) notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    78
                    setUpSelector1 notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    79
                        self error:'More than one <setup> method'.
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    80
                    ].
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    81
                    setUpSelector1 := selector.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    82
                ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    83
                (method pragmaAt:#teardown) notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    84
                    tearDownSelector1 notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    85
                        self error:'More than one <teardown> method'.
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    86
                    ].
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    87
                    tearDownSelector1 := selector.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    88
                ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    89
                (method pragmaAt:#warmup) notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    90
                    warmUpSelector1 notNil ifTrue:[
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    91
                        self error:'More than one <warmup> method'.
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    92
                    ].
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    93
                    warmUpSelector1 := selector.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    94
                ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    95
            ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    96
        ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    97
    benchmarkMethod := instance class compiledMethodAt:benchmarkSelector.
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    98
    annotation := benchmarkMethod pragmaAt:#setup:.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    99
    annotation 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
   100
        | method  selector |
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   101
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   102
        selector := annotation argumentAt:1.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   103
        selector isSymbol ifFalse:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   104
            self error:'<setup:> annotation argument not a symbol'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   105
        ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   106
        method := instance compiledMethodAt:selector ifAbsent:[ nil ].
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   107
        method isNil ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   108
            self error:'<setup:> method does not exist (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   109
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   110
        method numArgs ~~ 0 ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   111
            self error:'<setup:> method has arguments (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   112
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   113
        setUpSelector2 := selector.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   114
    ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   115
    annotation := benchmarkMethod pragmaAt:#teardown:.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   116
    annotation 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
   117
        | method  selector |
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   118
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   119
        selector := annotation argumentAt:1.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   120
        selector isSymbol ifFalse:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   121
            self error:'<teardown:> annotation argument not a symbol'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   122
        ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   123
        method := instance compiledMethodAt:selector ifAbsent:[ nil ].
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   124
        method isNil ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   125
            self error:'<teardown:> method does not exist (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   126
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   127
        method numArgs ~~ 0 ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   128
            self error:'<teardown:> method has arguments (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   129
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   130
        tearDownSelector2 := selector.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   131
    ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   132
    annotation := benchmarkMethod pragmaAt:#warmup:.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   133
    annotation 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
   134
        | method  selector |
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   135
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   136
        selector := annotation argumentAt:1.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   137
        selector isSymbol ifFalse:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   138
            self error:'<warmup:> annotation argument not a symbol'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   139
        ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   140
        method := instance compiledMethodAt:selector ifAbsent:[ nil ].
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   141
        method isNil ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   142
            self error:'<warmup:> method does not exist (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   143
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   144
        method numArgs ~~ 0 ifTrue:[
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   145
            self error:'<warmup:> method has arguments (' , selector , ')'.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   146
        ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   147
        warmUpSelector2 := selector.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   148
    ].
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    "Created: / 27-05-2013 / 19:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   151
    "Modified: / 28-05-2013 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
!BenchmarkInstance methodsFor:'running'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
run
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    ^self run: BenchmarkResult new.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    "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
   160
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
run: aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    ^self run: aBenchmarkResult with: Dictionary new
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    "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
   166
    "Modified: / 28-05-2013 / 00:02:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
run: aBenchmarkResult with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    aBenchmarkResult runBenchmark: self withParameters: aDictionary.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    ^aBenchmarkResult
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    "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
   174
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   176
runBenchmarkWithParameters:aBenchmarkParameterSet 
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   177
    | t |
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   178
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   179
    t := -1.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   180
    [
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   181
        self setUp.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   182
        self setUpParameters:aBenchmarkParameterSet.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   183
        self warmUp.
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   184
        t := self benchmark.
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   185
    ] ensure:[ self tearDown. ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   186
    ^ t
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   187
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   188
    "Created: / 27-05-2013 / 22:25:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   189
    "Modified: / 28-05-2013 / 08:49:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   190
!
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   191
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
runWith: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    ^self run: BenchmarkResult new with: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "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
   196
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
!BenchmarkInstance methodsFor:'running-private'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   200
benchmark
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   201
    | t0  t1 |
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   203
    t0 := MillisecondsTime value.
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   204
    instance perform:benchmarkSelector.
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   205
    t1 := MillisecondsTime value.
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   206
    ^ t1 - t0
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   208
    "Created: / 28-05-2013 / 08:49:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   209
    "Modified: / 31-05-2013 / 12:02:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   210
!
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   211
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
setUp
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   213
    setUpSelector1 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   214
        instance perform: setUpSelector1 
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   215
    ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   216
    setUpSelector2 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   217
        instance perform: setUpSelector2 
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   218
    ].
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    "Created: / 27-05-2013 / 19:02:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   221
    "Modified: / 28-05-2013 / 10:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
setUpParameter: name from: parameters type: type values: values
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    | key1 key2  valueString value |
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
    key1 := instance class name , '#' , name.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    key2 := name.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    valueString := parameters at: key1 ifAbsent:[parameters at: key2 ifAbsent:[^ self]].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    (type includesBehavior: CharacterArray) ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
        value := valueString.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    ] ifFalse:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
        value := type readFrom: valueString onError:[ self error:'Cannot read parameter '. name ,' (conversion error)'].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
    ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    values notNil ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
        (values includes: value) ifFalse:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
            self error: 'Invalid parameter value for ', name , ' (' , value storeString ,')'
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
        ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    instance perform: (name , ':') asSymbol with: value.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
    "Created: / 28-05-2013 / 00:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
setUpParameters: aDictionary
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    instance class methodDictionary keysAndValuesDo:[:selector :method |
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
        | annotation name type values value |
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
        method numArgs == 1 ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
            (annotation := method pragmaAt: #parameter:) notNil ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
                type := Smalltalk at: (annotation argumentAt: 1)
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
            ] ifFalse:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
                (annotation := method pragmaAt: #parameter:values:) notNil ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
                    type :=  Smalltalk at: (annotation argumentAt: 1).
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
                    values := (annotation argumentAt: 2)
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
                ]
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
            ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
            annotation notNil ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
                name := selector.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
                name last = $: ifTrue:[
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
                    name := name copyWithoutLast: 1.
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
                ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
                self setUpParameter: name from: aDictionary type: type values: values  
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
            ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
        ].
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    ]
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
    "Created: / 27-05-2013 / 22:27:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    "Modified: / 28-05-2013 / 00:08:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
tearDown
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   272
    tearDownSelector1 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   273
        instance perform: tearDownSelector1 
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   274
    ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   275
    tearDownSelector2 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   276
        instance perform: tearDownSelector2
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   277
    ].
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
    "Created: / 27-05-2013 / 19:02:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   280
    "Modified: / 28-05-2013 / 10:58:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
warmUp
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   284
    | warmed |
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   285
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   286
    warmed := false.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   287
    warmUpSelector1 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   288
        instance perform: warmUpSelector1.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   289
        warmed := true.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   290
    ].
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   291
    warmUpSelector2 notNil ifTrue:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   292
        instance perform: warmUpSelector2.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   293
        warmed := true.
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   294
    ].
4
2e2258b6bf90 Removed Smalltalk/X specific eol-comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   295
    "Default warmup"
1
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   296
    warmed ifFalse:[
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   297
        instance perform: benchmarkSelector 
1ab204c5442a BenchmarkInstance refactored, added initial version of text report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   298
    ].
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   299
    ObjectMemory garbageCollect; tenure.
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
    "Created: / 27-05-2013 / 19:02:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
25b264cec44e Added parameter to BenchmarkResult to run each benchmark multiple times.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   302
    "Modified: / 04-06-2013 / 22:19:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
!BenchmarkInstance class methodsFor:'documentation'!
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
version_HG
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    ^ '$Changeset: <not expanded> $'
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   310
!
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   311
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   312
version_MC
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   313
    ^ '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
   314
! !
c86831d0f7e7 Initial version of CalipeL/S.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
5
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   316
8669edf62d9b Fixes to make it running on Squeak/Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   317
BenchmarkInstance initialize!