s/BenchmarkExecutor.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 10 Mar 2014 11:29:09 +0000
changeset 206 29602f0696d8
parent 186 d444d8e7d29b
child 207 1697e4572960
permissions -rw-r--r--
Refactoring and cleanup. * Support for multiple per-benchmark setups. * Fix for overridden parameter definitions. * Fix in parameter combinator. When parameter has no default value but possible values are listed and no value is explicitly defined (using -D), then run benchmark with all values listed in parameter definition. * Run setup/teardown before and after **EACH** benchmark run and before/after warmup.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:calipel/s' }"
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#BenchmarkExecutor
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'CalipeL-S-Core'
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!BenchmarkExecutor class methodsFor:'documentation'!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
documentation
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    A benchmark executor takes a signle BenchmarkInstance and a set of
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    parameter definitions and executes it. Returns a set of
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    BenchmarkOutcomes.
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    [author:]
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
        Jan Vrany <jan.vrany@fit.cvut.cz>
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    [instance variables:]
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    [class variables:]
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    [see also:]
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
"
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
! !
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    30
!BenchmarkExecutor class methodsFor:'execution'!
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    31
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    32
execute:aBenchmarkInstance
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    33
    ^ self new execute:aBenchmarkInstance
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    34
!
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    35
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    36
execute:aBenchmarkInstance result:aBenchmarkResult
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    37
    ^ self new execute:aBenchmarkInstance result:aBenchmarkResult
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    38
!
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    39
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    40
execute:aBenchmarkInstance result:aBenchmarkResult defines:aDictionary
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    41
    ^ self new execute:aBenchmarkInstance result:aBenchmarkResult defines:aDictionary
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    42
! !
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    43
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!BenchmarkExecutor methodsFor:'executing'!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    46
execute: aBenchmarkInstance
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    47
    "Executes the benchmark and returns the result (timings)"
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    48
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    49
    ^ self execute: aBenchmarkInstance result: BenchmarkResult new
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    50
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    51
    "Created: / 09-03-2014 / 10:59:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    52
!
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    53
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    54
execute: aBenchmarkInstance result: aBenchmarkResult
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    55
    "
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    56
    Executes the benchmark and adds results into given resultset
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    57
    "
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    58
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    59
    ^ self execute: aBenchmarkInstance result: aBenchmarkResult defines: Dictionary new.
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    60
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    61
    "Created: / 09-03-2014 / 10:59:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    62
!
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
    63
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
execute: aBenchmarkInstance result: aBenchmarkResult defines: aDictionary
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    "
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    Takes a benchmark instance and a set of parameter defines,
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    executes the benchmark and one or more outcomes into given
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    result.
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    This is where real execution happens"
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    72
    | parameters combinator |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    73
142
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 141
diff changeset
    74
    aBenchmarkResult initializeTimestampIfNotAlready.
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    75
    parameters := aBenchmarkInstance parameters collect:[:parameter|
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    76
        | key1 key2 valuesString values defined |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    77
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    78
        key1 := aBenchmarkInstance instance class name , '#' , parameter name.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    79
        key2 := parameter name.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    80
        defined := true.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    81
        valuesString := aDictionary at: key1 ifAbsent:[aDictionary at: key2 ifAbsent:[defined := false]].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    82
        defined ifTrue:[
152
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
    83
            values := BenchmarkPlatform current isSmalltalkX 
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
    84
                        ifTrue:[valuesString tokensBasedOn: $,]
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
    85
                        ifFalse:[valuesString subStrings:','].
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
    86
            values := values collect:[:each|
150
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    87
152
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
    88
                (parameter type includesBehavior: String) ifTrue:[
150
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    89
                    each
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    90
                ] ifFalse:[
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    91
                    | s v |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    92
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    93
                    s := each readStream.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    94
                    v := parameter type readFrom: s onError:[
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    95
                        "JV: Note for Smalltalk/X: #signal: is actually an ANSI 1.9 protocol!!"
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    96
                        BenchmarkParameterError new signal: 'Cannot read parameter value for ' , parameter name , ' (parse error)'
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    97
                    ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    98
                    s atEnd ifFalse:[
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    99
                        "JV: Note for Smalltalk/X: #signal: is actually an ANSI 1.9 protocol!!"
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   100
                        BenchmarkParameterError new signal: 'Cannot read parameter value for ' , parameter name , ' (parse error)'
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   101
                    ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   102
                    v.                
150
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   103
                ].
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   104
            ]
8f61a93024f9 Allow for multiple values of string parameters.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   105
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   106
        ] ifFalse:[
141
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   107
            parameter default == BenchmarkParameter undefinedValue ifTrue:[
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   108
                values := parameter values.
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   109
                values isNil ifTrue:[ 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   110
                    BenchmarkParameterError new signal: 'Parameter value not defined and default value(s) not specified for' , parameter name.
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   111
                ].
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   112
            ] ifFalse:[ 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   113
                values := Array with: parameter default.    
141
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   114
            ].
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   115
        ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   116
        parameter -> values
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   117
    ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   118
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   119
    parameters := parameters asOrderedCollection sort:[:a :b | a key name < b key name ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   120
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   121
    combinator := [:parametersAndValues |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   122
        parametersAndValues size = parameters size ifTrue:[
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   123
            self execute: aBenchmarkInstance  result: aBenchmarkResult  parameters: parametersAndValues.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   124
        ] ifFalse:[
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   125
            | parameter |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   126
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   127
            parameter := parameters at: parametersAndValues size + 1.
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   128
            parameter value do:[:value |
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   129
                combinator value: (parametersAndValues copyWith: (parameter key -> value)).
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   130
            ]
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   131
        ]
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   132
    ].
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   133
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   134
    combinator value: #().
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   135
152
ca3d03cb5499 Fixes for Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 150
diff changeset
   136
    "Created: / 12-08-2013 / 00:11:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   137
    "Modified: / 10-03-2014 / 10:23:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   138
! !
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   139
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   140
!BenchmarkExecutor methodsFor:'executing-private'!
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   141
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   142
execute: aBenchmarkInstance result: aBenchmarkResult parameters: aCollection
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   143
    "
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   144
    Takes a benchmark instance and a set of parameter defines,
186
d444d8e7d29b Changed BenchmarkExecutor>>#execute:result:parameters: to return an outcome.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   145
    executes the benchmark and an outcome to the result. Returns that
d444d8e7d29b Changed BenchmarkExecutor>>#execute:result:parameters: to return an outcome.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   146
    outcome
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   147
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   148
    This is where real execution happens"
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   149
186
d444d8e7d29b Changed BenchmarkExecutor>>#execute:result:parameters: to return an outcome.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   150
    | times outcome |
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   152
    "First, warm it up"
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   153
    [ 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   154
        self setUp:aBenchmarkInstance parameters: aCollection.  
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
        self warmUp: aBenchmarkInstance.
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    ] ensure:[
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
        self tearDown: aBenchmarkInstance
186
d444d8e7d29b Changed BenchmarkExecutor>>#execute:result:parameters: to return an outcome.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   158
    ].
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   159
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   160
    times := (1 to: aBenchmarkResult runs) collect:[:i | 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   161
        [
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   162
            self setUp:aBenchmarkInstance parameters: aCollection.  
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   163
            self timeIt: aBenchmarkInstance 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   164
        ] ensure:[
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   165
            self tearDown: aBenchmarkInstance
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   166
        ].
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   167
    ].
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   168
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   169
    aBenchmarkResult addOutcome:
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   170
        (outcome := BenchmarkOutcome 
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   171
            benchmark: aBenchmarkInstance
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   172
            times: times
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   173
            parameters: aCollection).
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   174
186
d444d8e7d29b Changed BenchmarkExecutor>>#execute:result:parameters: to return an outcome.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   175
    ^ outcome
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   177
    "Created: / 27-07-2013 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
206
29602f0696d8 Refactoring and cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 186
diff changeset
   178
    "Modified (format): / 10-03-2014 / 09:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   179
!
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   181
setUp:aBenchmarkInstance parameters: aCollection
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   182
    [
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   183
        aCollection do:[:each|
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   184
            aBenchmarkInstance setUpParameter: each key value: each value
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   185
        ].
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   186
        aBenchmarkInstance setUp.        
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   187
    ] on: Error do:[:ex|
147
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   188
        (ex isKindOf: BenchmarkError) ifTrue:[
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   189
            ex pass
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   190
        ] ifFalse:[
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   191
            BenchmarkExecutionError new signal:'Error during set-up: ', ex description.
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   192
        ].
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   193
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   194
    ]
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
140
425f8c6946f4 Introduced BenchmarkParameter class. Added parameter combination...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   196
    "Created: / 27-07-2013 / 12:31:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
147
91e4feb2c8b5 Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 145
diff changeset
   197
    "Modified: / 01-08-2013 / 19:14:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
tearDown: aBenchmarkInstance
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   201
    [
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   202
        aBenchmarkInstance tearDown.
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   203
    ] on: Error do:[:ex|
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   204
        BenchmarkExecutionError new signal:'Error during tear-down: ', ex description.      
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   205
    ]
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    "Created: / 24-06-2013 / 01:12:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   208
    "Modified: / 31-07-2013 / 01:03:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
timeIt: aBenchmarkInstance
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   212
    | t |
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   213
    [
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   214
        t := aBenchmarkInstance timeIt.
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   215
    ] on: Error do:[:ex|
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   216
        BenchmarkExecutionError new signal:'Error during measurement: ', ex description.      
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   217
    ].
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   218
    ^t
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    "Created: / 24-06-2013 / 01:11:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   221
    "Modified: / 31-07-2013 / 01:03:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
!
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
warmUp: aBenchmarkInstance
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   225
    [
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   226
        aBenchmarkInstance warmUp.
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   227
    ] on: Error do:[:ex|
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   228
        BenchmarkExecutionError new signal:'Error during warm-up: ', ex description.      
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   229
    ]
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
    "Created: / 24-06-2013 / 01:11:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
145
98ebd63b85c9 Catch and report errors during execution
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
   232
    "Modified: / 31-07-2013 / 01:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
139
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
! !
eaf40f3173ad Introduced BenchmarkExecutor - a class responsible for execution of a single benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
141
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   235
!BenchmarkExecutor class methodsFor:'documentation'!
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   236
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   237
version_HG
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   238
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   239
    ^ '$Changeset: <not expanded> $'
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   240
! !
4fbcea2829d2 Parameter values for parameters without default must be specified...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 140
diff changeset
   241