--- a/s/BenchmarkExecutor.st Sat Mar 08 16:29:50 2014 +0000
+++ b/s/BenchmarkExecutor.st Mon Mar 10 11:29:09 2014 +0000
@@ -27,8 +27,40 @@
"
! !
+!BenchmarkExecutor class methodsFor:'execution'!
+
+execute:aBenchmarkInstance
+ ^ self new execute:aBenchmarkInstance
+!
+
+execute:aBenchmarkInstance result:aBenchmarkResult
+ ^ self new execute:aBenchmarkInstance result:aBenchmarkResult
+!
+
+execute:aBenchmarkInstance result:aBenchmarkResult defines:aDictionary
+ ^ self new execute:aBenchmarkInstance result:aBenchmarkResult defines:aDictionary
+! !
+
!BenchmarkExecutor methodsFor:'executing'!
+execute: aBenchmarkInstance
+ "Executes the benchmark and returns the result (timings)"
+
+ ^ self execute: aBenchmarkInstance result: BenchmarkResult new
+
+ "Created: / 09-03-2014 / 10:59:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+execute: aBenchmarkInstance result: aBenchmarkResult
+ "
+ Executes the benchmark and adds results into given resultset
+ "
+
+ ^ self execute: aBenchmarkInstance result: aBenchmarkResult defines: Dictionary new.
+
+ "Created: / 09-03-2014 / 10:59:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
execute: aBenchmarkInstance result: aBenchmarkResult defines: aDictionary
"
Takes a benchmark instance and a set of parameter defines,
@@ -73,9 +105,13 @@
] ifFalse:[
parameter default == BenchmarkParameter undefinedValue ifTrue:[
- BenchmarkParameterError new signal: 'Parameter value for ' , parameter name , ' not specified and parameter has no default value'.
+ values := parameter values.
+ values isNil ifTrue:[
+ BenchmarkParameterError new signal: 'Parameter value not defined and default value(s) not specified for' , parameter name.
+ ].
+ ] ifFalse:[
+ values := Array with: parameter default.
].
- values := Array with: parameter default.
].
parameter -> values
].
@@ -98,6 +134,7 @@
combinator value: #().
"Created: / 12-08-2013 / 00:11:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-03-2014 / 10:23:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkExecutor methodsFor:'executing-private'!
@@ -112,22 +149,33 @@
| times outcome |
- [
- self setUp:aBenchmarkInstance parameters: aCollection .
+ "First, warm it up"
+ [
+ self setUp:aBenchmarkInstance parameters: aCollection.
self warmUp: aBenchmarkInstance.
- times := (1 to: aBenchmarkResult runs) collect:[:i | self timeIt: aBenchmarkInstance ].
- aBenchmarkResult addOutcome:
- (outcome := BenchmarkOutcome
- benchmark: aBenchmarkInstance
- times: times
- parameters: aCollection)
] ensure:[
self tearDown: aBenchmarkInstance
].
+
+ times := (1 to: aBenchmarkResult runs) collect:[:i |
+ [
+ self setUp:aBenchmarkInstance parameters: aCollection.
+ self timeIt: aBenchmarkInstance
+ ] ensure:[
+ self tearDown: aBenchmarkInstance
+ ].
+ ].
+
+ aBenchmarkResult addOutcome:
+ (outcome := BenchmarkOutcome
+ benchmark: aBenchmarkInstance
+ times: times
+ parameters: aCollection).
+
^ outcome
"Created: / 27-07-2013 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 21-08-2013 / 13:34:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 10-03-2014 / 09:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
setUp:aBenchmarkInstance parameters: aCollection