--- a/.hgsub Thu Dec 04 00:12:57 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-wiki = wiki
--- a/.hgsubstate Thu Dec 04 00:12:57 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-82b067b748a1b187144eb62111f2ee13d0432c5d wiki
--- a/doc Thu Dec 04 00:12:57 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-wiki
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/BenchmarkCountingInstrument.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,66 @@
+"{ Package: 'jv:calipel/s' }"
+
+BenchmarkMeasurementInstrument subclass:#BenchmarkCountingInstrument
+ instanceVariableNames:'c0 c1'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Core-Measurement'
+!
+
+!BenchmarkCountingInstrument class methodsFor:'queries'!
+
+isAbstract
+ "Return if this class is an abstract class.
+ True is returned here for myself only; false for subclasses.
+ Abstract subclasses must redefine again."
+
+ ^ self == BenchmarkCountingInstrument.
+! !
+
+!BenchmarkCountingInstrument methodsFor:'accessing'!
+
+measurementUnit
+ "Return a string describing a unit of this instrument, i.e., msecs
+ for time or '1' for plain counters"
+
+ ^ '1'
+
+ "Created: / 27-11-2014 / 12:39:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkCountingInstrument methodsFor:'measurement'!
+
+measurementStart:aBenchmarkInstance
+ "superclass BenchmarkMeasurementInstrument says that I am responsible to implement this method"
+
+ ^ c0 := self getCounterValue
+
+ "Created: / 27-11-2014 / 12:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:44:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementStop:aBenchmarkInstance
+ "superclass BenchmarkMeasurementInstrument says that I am responsible to implement this method"
+
+ ^ c1 := self getCounterValue
+
+ "Created: / 27-11-2014 / 12:41:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementValue
+ "superclass BenchmarkMeasurementInstrument says that I am responsible to implement this method"
+
+ ^ c1 - c0
+
+ "Created: / 27-11-2014 / 12:40:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkCountingInstrument methodsFor:'private'!
+
+getCounterValue
+ ^ self subclassResponsibility
+
+ "Created: / 27-11-2014 / 12:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/s/BenchmarkError.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkError.st Thu Dec 04 00:25:31 2014 +0000
@@ -7,3 +7,11 @@
category:'CalipeL-S-Core-Exceptions'
!
+
+!BenchmarkError class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/BenchmarkExecutionTimeInstrument.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,92 @@
+"{ Package: 'jv:calipel/s' }"
+
+BenchmarkMeasurementInstrument subclass:#BenchmarkExecutionTimeInstrument
+ instanceVariableNames:'t0 t1'
+ classVariableNames:'MillisecondsTime'
+ poolDictionaries:''
+ category:'CalipeL-S-Core-Measurement'
+!
+
+!BenchmarkExecutionTimeInstrument class methodsFor:'documentation'!
+
+documentation
+"
+ The one and only instrument that is guaranteed to be on every platform.
+ It measures time to run a benchmark (real time).
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+! !
+
+!BenchmarkExecutionTimeInstrument methodsFor:'accessing'!
+
+measurementInstrumentName
+ "Returns a human-readable name of this instrument"
+
+ ^ 'Execution Time'
+
+ "Created: / 01-12-2014 / 02:36:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementUnit
+ "Return a string describing a unit of this instrument, i.e., msecs
+ for time or '1' for plain counters"
+
+ ^ 'ms'
+
+ "Created: / 24-11-2014 / 23:47:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 25-11-2014 / 01:09:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+name
+ "Returns a human-readable name of this instrument"
+
+ ^ 'Execution Time'
+
+ "Created: / 24-11-2014 / 23:47:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkExecutionTimeInstrument methodsFor:'measurement'!
+
+measurementStart:aBenchmarkInstance
+ "superclass BenchmarkMeasurementInstrument says that I am responsible to implement this method"
+
+ t0 := BenchmarkPlatform current millisecondTime
+
+ "Created: / 24-11-2014 / 08:49:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-11-2014 / 12:09:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementStop:aBenchmarkInstance
+ t1 := BenchmarkPlatform current millisecondTime
+
+ "Created: / 24-11-2014 / 08:49:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-11-2014 / 12:09:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:45:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementValue
+ "superclass BenchmarkMeasurementInstrument says that I am responsible to implement this method"
+
+ ^ t1 - t0
+
+ "Created: / 24-11-2014 / 08:49:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkExecutionTimeInstrument methodsFor:'testing'!
+
+isExecutionTimeInstrument
+ ^ true
+
+ "Created: / 24-11-2014 / 07:16:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/s/BenchmarkExecutor.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkExecutor.st Thu Dec 04 00:25:31 2014 +0000
@@ -1,7 +1,7 @@
"{ Package: 'jv:calipel/s' }"
Object subclass:#BenchmarkExecutor
- instanceVariableNames:''
+ instanceVariableNames:'instruments'
classVariableNames:''
poolDictionaries:''
category:'CalipeL-S-Core'
@@ -27,6 +27,14 @@
"
! !
+!BenchmarkExecutor class methodsFor:'instance creation'!
+
+new
+ "return an initialized instance"
+
+ ^ self basicNew initialize.
+! !
+
!BenchmarkExecutor class methodsFor:'execution'!
execute:aBenchmarkInstance
@@ -41,6 +49,20 @@
^ self new execute:aBenchmarkInstance result:aBenchmarkResult defines:aDictionary
! !
+!BenchmarkExecutor methodsFor:'accessing'!
+
+instruments
+ ^ instruments
+!
+
+instruments:aCollection
+ "Set a list of user-defined mersurement instruments"
+
+ instruments := aCollection.
+
+ "Modified (comment): / 27-11-2014 / 13:43:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkExecutor methodsFor:'executing'!
execute: aBenchmarkInstance
@@ -216,6 +238,19 @@
!BenchmarkExecutor methodsFor:'executing-private'!
+benchmark: aBenchmarkInstance
+ | measurements |
+ [
+ measurements := aBenchmarkInstance benchmarkUsingInstruments: (BenchmarkPlatform current instruments) , instruments.
+ ] on: Error do:[:ex|
+ BenchmarkExecutionError new signal:'Error during measurement: ', ex description.
+ ].
+ ^measurements
+
+ "Created: / 24-11-2014 / 00:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-11-2014 / 13:43:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
execute: aBenchmarkInstance result: aBenchmarkResult parameters: aCollection
"
Takes a benchmark instance and a set of parameter defines,
@@ -224,7 +259,7 @@
This is where real execution happens"
- | times outcome |
+ | measurements outcome |
"First, warm it up"
[
@@ -234,10 +269,10 @@
self tearDown: aBenchmarkInstance
].
- times := (1 to: aBenchmarkResult runs) collect:[:i |
+ measurements := (1 to: aBenchmarkResult runs) collect:[:i |
[
self setUp:aBenchmarkInstance parameters: aCollection.
- self timeIt: aBenchmarkInstance
+ self benchmark: aBenchmarkInstance
] ensure:[
self tearDown: aBenchmarkInstance
].
@@ -246,13 +281,13 @@
aBenchmarkResult addOutcome:
(outcome := BenchmarkOutcome
benchmark: aBenchmarkInstance
- times: times
- parameters: aCollection).
+ parameters: aCollection
+ measurements: measurements).
^ outcome
"Created: / 27-07-2013 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 10-03-2014 / 09:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-11-2014 / 06:54:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
setUp:aBenchmarkInstance parameters: aCollection
@@ -297,19 +332,6 @@
"Modified: / 31-07-2013 / 01:03:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-timeIt: aBenchmarkInstance
- | t |
- [
- t := aBenchmarkInstance timeIt.
- ] on: Error do:[:ex|
- BenchmarkExecutionError new signal:'Error during measurement: ', ex description.
- ].
- ^t
-
- "Created: / 24-06-2013 / 01:11:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 31-07-2013 / 01:03:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
warmUp: aBenchmarkInstance
[
aBenchmarkInstance warmUp.
@@ -321,6 +343,16 @@
"Modified: / 31-07-2013 / 01:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkExecutor methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ instruments := #()
+
+ "Modified: / 27-11-2014 / 13:42:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkExecutor methodsFor:'profiling-private'!
spy: aBenchmarkInstance result: aBenchmarkResult parameters: aCollection
--- a/s/BenchmarkInstance.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkInstance.st Thu Dec 04 00:25:31 2014 +0000
@@ -354,6 +354,42 @@
!BenchmarkInstance methodsFor:'running-private'!
+benchmarkUsingInstruments:instruments
+ | profile profiler measurements instrumentArray executuonTimeInstrument |
+
+ instrumentArray := instruments asArray.
+ executuonTimeInstrument := instrumentArray detect:[:each | BenchmarkMeasurementInstrument isExecuttionTimeInstrument: each ] ifNone:[ nil ].
+ executuonTimeInstrument notNil ifTrue:[
+ instrumentArray swap: (instrumentArray identityIndexOf: executuonTimeInstrument) with: instrumentArray size.
+ ].
+ " Special - check if running under callgrind, if so,
+ request instrumentation - supported only on Smalltalk/X "
+ profile := Smalltalk isSmalltalkX
+ and:[
+ (Smalltalk at:#Profiler) notNil
+ and:[ (Smalltalk at:#Profiler) valgrind runningUnderValgrind ]
+ ].
+ profile ifTrue:[
+ profiler := (Smalltalk at:#Profiler) valgrind.
+ profiler callgrindInstrumentationStart.
+ ].
+ instrumentArray do:[:i |
+ i measurementStart:self
+ ].
+ instance perform:benchmarkSelector.
+ instrumentArray reverseDo:[:i |
+ i measurementStop:self
+ ].
+ profile ifTrue:[
+ profiler callgrindInstrumentationStop.
+ ].
+ measurements := instrumentArray collect:[:i | BenchmarkMeasurement instrument:i value:i measurementValue ].
+ ^ measurements
+
+ "Created: / 24-11-2014 / 00:17:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-12-2014 / 23:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
setUp
setUpSelector1 notNil ifTrue:[
instance perform: setUpSelector1
@@ -404,30 +440,6 @@
"Modified: / 09-03-2014 / 23:18:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-timeIt
- | t0 t1 profile profiler |
-
- " Special - check if running under callgrind, if so,
- request instrumentation - supported only on Smalltalk/X "
- profile := Smalltalk isSmalltalkX
- and:[ (Smalltalk at:#Profiler) notNil
- and:[ (Smalltalk at:#Profiler) valgrind runningUnderValgrind]].
- profile ifTrue:[
- profiler := (Smalltalk at:#Profiler) valgrind.
- profiler callgrindInstrumentationStart.
- ].
- t0 := MillisecondsTime value.
- instance perform:benchmarkSelector.
- t1 := MillisecondsTime value.
- profile ifTrue:[
- profiler callgrindInstrumentationStop.
- ].
- ^ t1 - t0
-
- "Created: / 24-06-2013 / 00:51:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 22-05-2014 / 12:01:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
warmUp
| warmed |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/BenchmarkMeasurement.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,56 @@
+"{ Package: 'jv:calipel/s' }"
+
+Object subclass:#BenchmarkMeasurement
+ instanceVariableNames:'value instrument'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Core-Measurement'
+!
+
+!BenchmarkMeasurement class methodsFor:'documentation'!
+
+documentation
+"
+ BenchmarkMeasurement is a simple value object that keeps a value
+ measured by some intrument
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+ BenchmarkMeasurementInstrument
+
+"
+! !
+
+!BenchmarkMeasurement class methodsFor:'instance creation'!
+
+instrument: instrumentArg value: valueArg
+ ^ self new instrument: instrumentArg value: valueArg
+
+ "Created: / 24-11-2014 / 07:15:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMeasurement methodsFor:'accessing'!
+
+instrument
+ ^ instrument
+!
+
+value
+ ^ value
+! !
+
+!BenchmarkMeasurement methodsFor:'initialization'!
+
+instrument: instrumentArg value: valueArg
+ instrument := instrumentArg.
+ value := valueArg
+
+ "Created: / 24-11-2014 / 07:06:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/BenchmarkMeasurementInstrument.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,95 @@
+"{ Package: 'jv:calipel/s' }"
+
+Object subclass:#BenchmarkMeasurementInstrument
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Core-Measurement'
+!
+
+!BenchmarkMeasurementInstrument class methodsFor:'documentation'!
+
+documentation
+"
+ Measurement instrument provides a way to measure a particular
+ aspect (time, number og GCs, invocations of some method...).
+
+ One may create a custom instruments and hook them in to measure
+ custom, application specific aspects.
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+! !
+
+!BenchmarkMeasurementInstrument class methodsFor:'testing'!
+
+isExecuttionTimeInstrument: instrument
+ ^ (instrument respondsTo:#isExecutionTimeInstrument) and:[instrument isExecutionTimeInstrument]
+
+ "Created: / 02-12-2014 / 23:26:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMeasurementInstrument methodsFor:'accessing'!
+
+measurementInstrumentName
+ "Returns a human-readable name of this instrument"
+
+ ^ self subclassResponsibility
+
+ "Created: / 01-12-2014 / 02:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementUnit
+ "Return a string describing a unit of this instrument, i.e., msecs
+ for time or '1' for plain counters"
+
+ ^ self subclassResponsibility
+
+ "Created: / 24-11-2014 / 23:47:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMeasurementInstrument methodsFor:'measurement'!
+
+measurementStart:aBenchmarkInstance
+ ^ self subclassResponsibility
+
+ "Created: / 24-11-2014 / 08:14:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:44:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementStop:aBenchmarkInstance
+ ^ self subclassResponsibility
+
+ "Created: / 24-11-2014 / 08:14:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 01-12-2014 / 02:44:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementValue
+ ^ self subclassResponsibility
+
+ "Created: / 24-11-2014 / 08:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMeasurementInstrument methodsFor:'testing'!
+
+isExecutionTimeInstrument
+ ^ false
+
+ "Created: / 24-11-2014 / 07:15:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMeasurementInstrument class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/BenchmarkMeasurementValueNotAvailable.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,40 @@
+"{ Package: 'jv:calipel/s' }"
+
+Object subclass:#BenchmarkMeasurementValueNotAvailable
+ instanceVariableNames:''
+ classVariableNames:'Instance'
+ poolDictionaries:''
+ category:'CalipeL-S-Core-Measurement'
+!
+
+!BenchmarkMeasurementValueNotAvailable class methodsFor:'instance creation'!
+
+flushSingleton
+ "flushes the cached singleton"
+
+ Instance := nil
+
+ "
+ self flushSingleton
+ "
+!
+
+instance
+ "returns a singleton"
+
+ Instance isNil ifTrue:[
+ Instance := self basicNew initialize.
+ ].
+ ^ Instance.
+
+ "Created: / 01-12-2014 / 02:53:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+new
+ "returns a singleton"
+
+ ^ self instance.
+
+ "Modified: / 01-12-2014 / 02:53:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/s/BenchmarkOutcome.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkOutcome.st Thu Dec 04 00:25:31 2014 +0000
@@ -1,7 +1,7 @@
"{ Package: 'jv:calipel/s' }"
Object subclass:#BenchmarkOutcome
- instanceVariableNames:'times benchmark parameters'
+ instanceVariableNames:'measurements benchmark parameters'
classVariableNames:''
poolDictionaries:''
category:'CalipeL-S-Core'
@@ -10,16 +10,10 @@
!BenchmarkOutcome class methodsFor:'instance creation'!
-benchmark:benchmarkArg times:timesArg parameters:paramsArg
- ^self new benchmark:benchmarkArg times:timesArg parameters:paramsArg
+benchmark: benchmark parameters: parameters measurements: measurements
+ ^ self new benchmark: benchmark parameters: parameters measurements: measurements
- "Created: / 11-06-2013 / 23:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-instance:instanceArg times:timesArg parameters:paramsArg
- ^self new instance:instanceArg times:timesArg parameters:paramsArg
-
- "Created: / 04-06-2013 / 22:26:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 24-11-2014 / 06:56:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkOutcome methodsFor:'accessing'!
@@ -30,28 +24,63 @@
"Created: / 11-06-2013 / 23:19:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+best
+ "Return the best run, i.e., run with minimal time"
+
+ ^ measurements inject: measurements anyOne into:[ :best :each |
+ | bestTime eachTime |
+
+ bestTime := best detect:[:m | BenchmarkMeasurementInstrument isExecuttionTimeInstrument: m instrument ] ifNone:[ nil ].
+ eachTime := best detect:[:m | BenchmarkMeasurementInstrument isExecuttionTimeInstrument: m instrument ] ifNone:[ nil ].
+
+ bestTime notNil ifTrue:[
+ eachTime notNil ifTrue:[
+ eachTime value < bestTime value ifTrue:[ each ] ifFalse:[ best ]
+ ] ifFalse:[
+ best
+ ]
+ ] ifFalse:[
+ eachTime notNil ifTrue:[ each ] ifFalse:[ best ]
+ ].
+ ].
+
+ "Created: / 25-11-2014 / 01:18:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-12-2014 / 23:28:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurements
+ ^ measurements
+!
+
parameters
^ parameters
!
time
- ^ times min
+ ^ (self times select:[:t | t notNil]) min
- "Modified: / 04-06-2013 / 22:25:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 25-11-2014 / 01:23:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
times
- ^ times
+ ^ measurements collect:[ :run |
+ | timeMeasurement |
+
+ timeMeasurement := run detect:[:each | BenchmarkMeasurementInstrument isExecuttionTimeInstrument: each instrument ] ifNone:[ nil ].
+ timeMeasurement value.
+ ]
+
+ "Modified: / 02-12-2014 / 23:27:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkOutcome methodsFor:'initialization'!
-benchmark:benchmarkArg times:timesArg parameters:paramsArg
+benchmark: benchmarkArg parameters: parametersArg measurements: measurementsArg
benchmark := benchmarkArg.
- times := timesArg.
- parameters := paramsArg.
+ measurements := measurementsArg.
+ parameters := parametersArg.
- "Created: / 11-06-2013 / 23:19:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 24-11-2014 / 06:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkOutcome class methodsFor:'documentation'!
--- a/s/BenchmarkPlatform.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkPlatform.st Thu Dec 04 00:25:31 2014 +0000
@@ -1,7 +1,7 @@
"{ Package: 'jv:calipel/s' }"
Object subclass:#BenchmarkPlatform
- instanceVariableNames:''
+ instanceVariableNames:'instruments'
classVariableNames:'Current'
poolDictionaries:''
category:'CalipeL-S-Core'
@@ -33,6 +33,14 @@
"
! !
+!BenchmarkPlatform class methodsFor:'instance creation'!
+
+new
+ "return an initialized instance"
+
+ ^ self basicNew initialize.
+! !
+
!BenchmarkPlatform class methodsFor:'accessing'!
current
@@ -41,6 +49,19 @@
"Created: / 06-06-2013 / 08:54:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkPlatform methodsFor:'accessing-instruments'!
+
+instruments
+ "Return a list of non-intrusive instruments available on this
+ platform."
+
+ "`instruments` variable is initialized in #initialize"
+ ^ instruments
+
+ "Created: / 27-11-2014 / 12:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 27-11-2014 / 13:41:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkPlatform methodsFor:'accessing-performance counters'!
millisecondTime
@@ -91,6 +112,18 @@
^ self subclassResponsibility
! !
+!BenchmarkPlatform methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ super initialize.
+ instruments := Array
+ with: BenchmarkExecutionTimeInstrument new
+
+ "Modified (format): / 27-11-2014 / 13:42:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkPlatform methodsFor:'queries'!
isHeadless
--- a/s/BenchmarkReportJSON.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkReportJSON.st Thu Dec 04 00:25:31 2014 +0000
@@ -80,16 +80,62 @@
"Modified: / 12-06-2013 / 14:14:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+writeMeasurement: measurement
+ measurement value ~~ BenchmarkMeasurementValueNotAvailable instance ifTrue:[
+ json writeDictionaryWith:[
+ json writeKey: 'instrument' valueWith: [ self writeMeasurementInstrument: measurement instrument ].
+ json writeElementSeparator.
+ json writeKey: 'value' value: measurement value
+ ].
+ ].
+
+ "Created: / 24-11-2014 / 23:41:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-12-2014 / 03:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+writeMeasurementInstrument: instrument
+ json writeDictionaryWith:[
+ json writeKey: 'name' value: instrument name.
+ json writeElementSeparator.
+ json writeKey: 'class' value: instrument class name.
+ json writeElementSeparator.
+ json writeKey: 'unit' value: instrument measurementUnit.
+ ].
+
+ "Created: / 24-11-2014 / 23:46:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+writeMeasurements: measurements
+ json writeArrayWith:[
+ measurements do:[:run |
+ json writeArrayWith:[
+ run do:[:measurement |
+ self writeMeasurement: measurement
+ ] separatedBy:[
+ json writeElementSeparator
+ ].
+ ].
+ ] separatedBy:[
+ json writeElementSeparator
+ ].
+ ].
+
+ "Created: / 24-11-2014 / 23:37:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
writeOutcome:outcome
json writeDictionaryWith:[
json writeKey: 'benchmark' valueWith: [ self writeBenchmark: outcome benchmark ].
json writeElementSeparator.
- json writeKey: 'times' value: outcome times.
+ json writeKey: 'measurements' valueWith: [ self writeMeasurements: outcome measurements ].
json writeElementSeparator.
json writeKey: 'parameters' valueWith: [ self writeParameters: outcome ].
+ json writeElementSeparator.
+ "For backward compatibility, will wanish"
+ json writeKey: 'times' value: outcome times.
]
- "Modified: / 12-06-2013 / 14:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-11-2014 / 23:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writeOutcomes
--- a/s/BenchmarkReportText.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkReportText.st Thu Dec 04 00:25:31 2014 +0000
@@ -1,7 +1,7 @@
"{ Package: 'jv:calipel/s' }"
BenchmarkReport subclass:#BenchmarkReportText
- instanceVariableNames:''
+ instanceVariableNames:'colwidths colheaders colmap'
classVariableNames:''
poolDictionaries:''
category:'CalipeL-S-Core-Reports'
@@ -13,7 +13,7 @@
format: anObject width: width align: align
| string |
- string := anObject printString.
+ string := anObject isString ifTrue:[anObject] ifFalse:[anObject printString].
align == #left ifTrue:[
stream nextPutAll: string.
stream next: ((width - string size) max: 0) put: Character space.
@@ -34,45 +34,98 @@
"Created: / 31-05-2013 / 12:09:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkReportText methodsFor:'private'!
+
+prepare
+ | instruments timeInstrument ncols |
+
+ instruments := Set new.
+ result outcomes do:[:outcome |
+ outcome best do:[:m | instruments add: m instrument ].
+ ].
+ timeInstrument := instruments detect:[:instrument | BenchmarkMeasurementInstrument isExecuttionTimeInstrument: instrument ] ifNone:[ nil ].
+ instruments remove: timeInstrument ifAbsent:[nil].
+ instruments := instruments asOrderedCollection sort:[:a :b | a measurementInstrumentName < b measurementInstrumentName ].
+ timeInstrument notNil ifTrue:[ instruments addFirst: timeInstrument ].
+
+ ncols := 1"benchmark name" + instruments size.
+ colwidths := Array new: ncols.
+ colheaders := Array new: ncols.
+ colmap := Array new: ncols.
+
+ colwidths at: 1 put: ((result outcomes inject: 0 into: [ :max :each | (max max: (each benchmark name size)) max: (each benchmark class name size) ]) max: 'Benchmark' size) + 3.
+ colheaders at: 1 put: 'Benchmark'.
+ colmap at: 1 put:[ :outcome :col | outcome benchmark name ].
+ 1 to: instruments size do:[:i |
+ | label |
+
+ label := (instruments at:i) measurementInstrumentName , ' [' , (instruments at:i) measurementUnit, ']'.
+ colwidths at: i + 1 put: label size + 3.
+ colheaders at: i + 1 put: label.
+ colmap at: i + 1 put: [ :outcome :col |
+ | measurement value |
+
+ measurement := outcome best detect:[:m | m instrument == (instruments at: col - 1) ] ifNone:[nil].
+ value := measurement notNil ifTrue:[ measurement value ] ifFalse:[ BenchmarkMeasurementValueNotAvailable instance ].
+ value ~~ BenchmarkMeasurementValueNotAvailable instance ifTrue:[ value ] ifFalse:[ 'N/A' ]
+ ].
+ ]
+
+ "Created: / 25-11-2014 / 01:14:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-12-2014 / 23:26:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkReportText methodsFor:'writing'!
+write
+ self prepare.
+ super write.
+
+ "Created: / 25-11-2014 / 01:13:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
writeFooter
"Modified: / 11-06-2013 / 23:28:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writeHeader
- stream
+ stream
nextPutAll: 'Generated at :';
nextPutAll: Date today printString;
nextPutAll: ' ';
nextPutAll: Time now printString;
cr;
cr.
+ 1 to: colwidths size do:[:i |
+ self format: (colheaders at:i) width: (colwidths at: i) align: #right.
+ stream space; "nextPut: $|;"space; space.
+ ].
+ stream nextPutAll: 'Parameters'
- "Modified: / 11-06-2013 / 23:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 25-11-2014 / 01:50:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writeOutcome: outcome
- self format: outcome benchmark name width: 25 align: #right.
- stream nextPutAll: ' : '.
- self format: outcome time width: 10 align: #right.
- stream nextPutAll: ' [ms]'.
- outcome parameters notEmpty ifTrue:[
- stream nextPutAll: ' {'.
+ 1 to: colwidths size do:[:i |
+ self format: ((colmap at:i) value: outcome value: i) width: (colwidths at: i) align: #right.
+ stream space; "nextPut: $|;"space; space.
+ ].
+ outcome parameters notEmpty ifTrue:[
+ stream nextPutAll: '{'.
(outcome parameters asSortedCollection:[:a :b | a key name < b key name ]) do:[:paramAndValue|
stream nextPutAll: paramAndValue key name.
- stream nextPutAll: '='.
+ stream nextPutAll: '='.
stream nextPutAll: paramAndValue value storeString.
] separatedBy:[
- stream nextPutAll: ', '.
+ stream nextPutAll: ', '.
].
stream nextPutAll: '}'.
].
stream cr.
"Created: / 11-06-2013 / 23:24:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 01-08-2013 / 18:09:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-11-2014 / 13:25:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writeOutcomes
@@ -82,13 +135,14 @@
result outcomesDo:[:outcome |
outcome benchmark instance class == class ifFalse:[
class := outcome benchmark instance class.
- stream nextPutAll: '== ', class name , ' =='; cr.
+ stream cr; nextPutAll: class name; cr.
].
self writeOutcome: outcome
].
stream cr.
"Created: / 11-06-2013 / 23:24:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 25-11-2014 / 01:45:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkReportText class methodsFor:'documentation'!
--- a/s/BenchmarkResult.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkResult.st Thu Dec 04 00:25:31 2014 +0000
@@ -118,6 +118,32 @@
"Created: / 23-06-2013 / 00:39:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkResult methodsFor:'inspecting'!
+
+inspector2TabJSON
+ <inspector2Tab>
+
+ ^ (self newInspector2Tab)
+ label:'JSON report';
+ priority:50;
+ text: [ String streamContents: [:s | BenchmarkReport json write: self on: s ] ];
+ yourself
+
+ "Modified: / 25-11-2014 / 01:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+inspector2TabTEXT
+ <inspector2Tab>
+
+ ^ (self newInspector2Tab)
+ label:'Text report';
+ priority:51;
+ text: [ String streamContents: [:s | BenchmarkReport text write: self on: s ] ];
+ yourself
+
+ "Created: / 25-11-2014 / 01:07:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkResult methodsFor:'printing & storing'!
printOn:aStream
--- a/s/BenchmarkRunner.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkRunner.st Thu Dec 04 00:25:31 2014 +0000
@@ -38,11 +38,12 @@
!BenchmarkRunner methodsFor:'main'!
main:argv0
- | i report name file params classes runs argv desc setup setupScript teardown teardownScript |
+ | i report instruments name file params classes runs argv desc setup setupScript teardown teardownScript executor |
params := Dictionary new.
classes := OrderedCollection new.
report := BenchmarkReport text.
+ instruments := OrderedCollection new.
runs := 5.
argv := argv0 asOrderedCollection.
@@ -97,6 +98,23 @@
self error: 'No report class named ''', reportNm, ''''.
].
].
+
+ (arg = '-i' or:[arg = '--instrument']) ifTrue:[
+ | instrumentNm instrumentCls |
+
+ i > argv size ifTrue:[
+ self error: arg, ' requires a valid class name parameter'
+ ].
+ instrumentNm := (argv at: i).
+ i := i + 1.
+ instrumentCls := Smalltalk at: instrumentNm asSymbol.
+ instrumentCls isNil ifTrue:[
+ self error: 'No instrument class named ''', instrumentNm, ''''.
+ ] ifFalse:[
+ instruments add: instrumentCls new.
+ ].
+ ].
+
arg = '--text' ifTrue:[
report := BenchmarkReport text.
].
@@ -209,8 +227,10 @@
"Run suite"
result := BenchmarkResult new.
+ executor := BenchmarkRunnerExecutor new.
+ executor instruments: instruments.
result runs: runs.
- suite run: result with: params executor: BenchmarkRunnerExecutor new.
+ suite run: result with: params executor: executor.
"Write report"
file notNil ifTrue:[
@@ -231,7 +251,7 @@
teardown notNil ifTrue:[ Compiler evaluate: teardown ].
teardownScript notNil ifTrue:[ Compiler evaluate: teardownScript asFilename contents asString ].
- "Modified: / 08-03-2014 / 16:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-11-2014 / 00:21:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
options
@@ -242,7 +262,8 @@
Common options:
-o FILE ................ write output to FILE instead of to standard output (default: stdout)
-n RUNS ................ how many times to run each bechmark (default: 5)
- -r REPORTCLASS ......... user REPORTCLASS to generate report (default: BenchmarkReportText)
+ -r REPORTCLASS ......... use REPORTCLASS to generate report (default: BenchmarkReportText)
+ -i | --instrument CLS .. add instance if CLS to set instruments (may be specified multiple times)
--arguments FILE ....... read additional arguments from FILE
--setup EXPR ........... evaluate EXPR before actually running any benchmark
--setup-script FILE .... evaluate code in FILE before actually running any benchmark
@@ -263,7 +284,7 @@
'
"Created: / 06-06-2013 / 11:01:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 30-09-2014 / 09:57:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-11-2014 / 00:16:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkRunner methodsFor:'private-parsing'!
--- a/s/BenchmarkRunnerExecutor.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/BenchmarkRunnerExecutor.st Thu Dec 04 00:25:31 2014 +0000
@@ -51,6 +51,13 @@
!BenchmarkRunnerExecutor methodsFor:'executing-private'!
+benchmark: aBenchmarkInstance
+ transcript nextPutAll: 'B..'.
+ ^super benchmark: aBenchmarkInstance.
+
+ "Created: / 24-11-2014 / 00:18:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
execute: aBenchmarkInstance result: aBenchmarkResult parameters: aCollection
| nm outcome |
@@ -107,13 +114,6 @@
"Created: / 24-06-2013 / 01:21:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-timeIt: aBenchmarkInstance
- transcript nextPutAll: 'B..'.
- ^super timeIt: aBenchmarkInstance.
-
- "Created: / 24-06-2013 / 01:22:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
warmUp: aBenchmarkInstance
transcript nextPutAll: 'W..'.
super warmUp: aBenchmarkInstance.
--- a/s/Make.proto Thu Dec 04 00:12:57 2014 +0000
+++ b/s/Make.proto Thu Dec 04 00:25:31 2014 +0000
@@ -125,6 +125,9 @@
$(OUTDIR)BenchmarkError.$(O) BenchmarkError.$(H): BenchmarkError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkExecutor.$(O) BenchmarkExecutor.$(H): BenchmarkExecutor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkInstance.$(O) BenchmarkInstance.$(H): BenchmarkInstance.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurement.$(O) BenchmarkMeasurement.$(H): BenchmarkMeasurement.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurementInstrument.$(O) BenchmarkMeasurementInstrument.$(H): BenchmarkMeasurementInstrument.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurementValueNotAvailable.$(O) BenchmarkMeasurementValueNotAvailable.$(H): BenchmarkMeasurementValueNotAvailable.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkOutcome.$(O) BenchmarkOutcome.$(H): BenchmarkOutcome.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkParameter.$(O) BenchmarkParameter.$(H): BenchmarkParameter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkPlatform.$(O) BenchmarkPlatform.$(H): BenchmarkPlatform.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -134,7 +137,9 @@
$(OUTDIR)BenchmarkRunner.$(O) BenchmarkRunner.$(H): BenchmarkRunner.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkSuite.$(O) BenchmarkSuite.$(H): BenchmarkSuite.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)jv_calipel_s.$(O) jv_calipel_s.$(H): jv_calipel_s.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkCountingInstrument.$(O) BenchmarkCountingInstrument.$(H): BenchmarkCountingInstrument.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkExecutionError.$(O) BenchmarkExecutionError.$(H): BenchmarkExecutionError.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkExecutionTimeInstrument.$(O) BenchmarkExecutionTimeInstrument.$(H): BenchmarkExecutionTimeInstrument.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkParameterError.$(O) BenchmarkParameterError.$(H): BenchmarkParameterError.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkReportJSON.$(O) BenchmarkReportJSON.$(H): BenchmarkReportJSON.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkReport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkReportText.$(O) BenchmarkReportText.$(H): BenchmarkReportText.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkReport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/s/Make.spec Thu Dec 04 00:12:57 2014 +0000
+++ b/s/Make.spec Thu Dec 04 00:25:31 2014 +0000
@@ -42,6 +42,7 @@
# -warnNonStandard : no warnings about ST/X extensions
# -warnEOLComments : no warnings about EOL comment extension
# -warnPrivacy : no warnings about privateClass extension
+# -warnUnused : no warnings about unused variables
#
# ********** OPTIONAL: MODIFY the next line(s) ***
# STCWARNINGS=-warn
@@ -54,6 +55,9 @@
BenchmarkError \
BenchmarkExecutor \
BenchmarkInstance \
+ BenchmarkMeasurement \
+ BenchmarkMeasurementInstrument \
+ BenchmarkMeasurementValueNotAvailable \
BenchmarkOutcome \
BenchmarkParameter \
BenchmarkPlatform \
@@ -63,7 +67,9 @@
BenchmarkRunner \
BenchmarkSuite \
jv_calipel_s \
+ BenchmarkCountingInstrument \
BenchmarkExecutionError \
+ BenchmarkExecutionTimeInstrument \
BenchmarkParameterError \
BenchmarkReportJSON \
BenchmarkReportText \
@@ -77,6 +83,9 @@
$(OUTDIR_SLASH)BenchmarkError.$(O) \
$(OUTDIR_SLASH)BenchmarkExecutor.$(O) \
$(OUTDIR_SLASH)BenchmarkInstance.$(O) \
+ $(OUTDIR_SLASH)BenchmarkMeasurement.$(O) \
+ $(OUTDIR_SLASH)BenchmarkMeasurementInstrument.$(O) \
+ $(OUTDIR_SLASH)BenchmarkMeasurementValueNotAvailable.$(O) \
$(OUTDIR_SLASH)BenchmarkOutcome.$(O) \
$(OUTDIR_SLASH)BenchmarkParameter.$(O) \
$(OUTDIR_SLASH)BenchmarkPlatform.$(O) \
@@ -86,7 +95,9 @@
$(OUTDIR_SLASH)BenchmarkRunner.$(O) \
$(OUTDIR_SLASH)BenchmarkSuite.$(O) \
$(OUTDIR_SLASH)jv_calipel_s.$(O) \
+ $(OUTDIR_SLASH)BenchmarkCountingInstrument.$(O) \
$(OUTDIR_SLASH)BenchmarkExecutionError.$(O) \
+ $(OUTDIR_SLASH)BenchmarkExecutionTimeInstrument.$(O) \
$(OUTDIR_SLASH)BenchmarkParameterError.$(O) \
$(OUTDIR_SLASH)BenchmarkReportJSON.$(O) \
$(OUTDIR_SLASH)BenchmarkReportText.$(O) \
--- a/s/abbrev.stc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/abbrev.stc Thu Dec 04 00:25:31 2014 +0000
@@ -5,6 +5,9 @@
BenchmarkError BenchmarkError jv:calipel/s 'CalipeL-S-Core-Exceptions' 1
BenchmarkExecutor BenchmarkExecutor jv:calipel/s 'CalipeL-S-Core' 0
BenchmarkInstance BenchmarkInstance jv:calipel/s 'CalipeL-S-Core' 0
+BenchmarkMeasurement BenchmarkMeasurement jv:calipel/s 'CalipeL-S-Core-Measurement' 0
+BenchmarkMeasurementInstrument BenchmarkMeasurementInstrument jv:calipel/s 'CalipeL-S-Core-Measurement' 0
+BenchmarkMeasurementValueNotAvailable BenchmarkMeasurementValueNotAvailable jv:calipel/s 'CalipeL-S-Core-Measurement' 0
BenchmarkOutcome BenchmarkOutcome jv:calipel/s 'CalipeL-S-Core' 0
BenchmarkParameter BenchmarkParameter jv:calipel/s 'CalipeL-S-Core' 0
BenchmarkPlatform BenchmarkPlatform jv:calipel/s 'CalipeL-S-Core' 0
@@ -14,7 +17,9 @@
BenchmarkRunner BenchmarkRunner jv:calipel/s 'CalipeL-S-Core-Runner' 0
BenchmarkSuite BenchmarkSuite jv:calipel/s 'CalipeL-S-Core' 0
jv_calipel_s jv_calipel_s jv:calipel/s '* Projects & Packages *' 3
+BenchmarkCountingInstrument BenchmarkCountingInstrument jv:calipel/s 'CalipeL-S-Core-Measurement' 0
BenchmarkExecutionError BenchmarkExecutionError jv:calipel/s 'CalipeL-S-Core-Exceptions' 1
+BenchmarkExecutionTimeInstrument BenchmarkExecutionTimeInstrument jv:calipel/s 'CalipeL-S-Core-Measurement' 0
BenchmarkParameterError BenchmarkParameterError jv:calipel/s 'CalipeL-S-Core-Exceptions' 1
BenchmarkReportJSON BenchmarkReportJSON jv:calipel/s 'CalipeL-S-Core-Reports' 0
BenchmarkReportText BenchmarkReportText jv:calipel/s 'CalipeL-S-Core-Reports' 0
--- a/s/bc.mak Thu Dec 04 00:12:57 2014 +0000
+++ b/s/bc.mak Thu Dec 04 00:25:31 2014 +0000
@@ -30,6 +30,7 @@
!INCLUDE Make.spec
LIBNAME=libjv_calipel_s
+MODULE_PATH=calipel\s
RESFILES=s.$(RES)
@@ -71,6 +72,9 @@
$(OUTDIR)BenchmarkError.$(O) BenchmarkError.$(H): BenchmarkError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkExecutor.$(O) BenchmarkExecutor.$(H): BenchmarkExecutor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkInstance.$(O) BenchmarkInstance.$(H): BenchmarkInstance.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurement.$(O) BenchmarkMeasurement.$(H): BenchmarkMeasurement.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurementInstrument.$(O) BenchmarkMeasurementInstrument.$(H): BenchmarkMeasurementInstrument.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMeasurementValueNotAvailable.$(O) BenchmarkMeasurementValueNotAvailable.$(H): BenchmarkMeasurementValueNotAvailable.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkOutcome.$(O) BenchmarkOutcome.$(H): BenchmarkOutcome.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkParameter.$(O) BenchmarkParameter.$(H): BenchmarkParameter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkPlatform.$(O) BenchmarkPlatform.$(H): BenchmarkPlatform.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -80,7 +84,9 @@
$(OUTDIR)BenchmarkRunner.$(O) BenchmarkRunner.$(H): BenchmarkRunner.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkSuite.$(O) BenchmarkSuite.$(H): BenchmarkSuite.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)jv_calipel_s.$(O) jv_calipel_s.$(H): jv_calipel_s.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkCountingInstrument.$(O) BenchmarkCountingInstrument.$(H): BenchmarkCountingInstrument.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkExecutionError.$(O) BenchmarkExecutionError.$(H): BenchmarkExecutionError.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkExecutionTimeInstrument.$(O) BenchmarkExecutionTimeInstrument.$(H): BenchmarkExecutionTimeInstrument.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkParameterError.$(O) BenchmarkParameterError.$(H): BenchmarkParameterError.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkReportJSON.$(O) BenchmarkReportJSON.$(H): BenchmarkReportJSON.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkReport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkReportText.$(O) BenchmarkReportText.$(H): BenchmarkReportText.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkReport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/s/benchmarks/stx/BenchmarkCollection.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/BenchmarkCollection.st Thu Dec 04 00:25:31 2014 +0000
@@ -73,13 +73,14 @@
collectionDataset1 := (1 to: collectionDatasetSize) collect:[:i | generator value ].
self assert: seen size = collectionDatasetSize.
- collectionDataset2 := nil. "/ unused.
- collectionDataset3 := nil. "/ unused.
+ collectionDataset2 := nil.
+ collectionDataset3 := nil.
Smalltalk garbageCollect.
collection := nil.
"Created: / 09-03-2014 / 10:10:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 10-03-2014 / 00:17:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 02-12-2014 / 23:56:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
tearDown
--- a/s/benchmarks/stx/BenchmarkSTX1.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/BenchmarkSTX1.st Thu Dec 04 00:25:31 2014 +0000
@@ -2170,9 +2170,9 @@
largeSubtract3
<benchmark: 'largeInt - smallInt subtraction 1'>
- |t n|
-
- "/ tests absFastMinus
+ |n|
+
+ "/ tests absFastMinus"
n := 1000 factorial.
100000 timesRepeat:[
@@ -2200,14 +2200,15 @@
"Modified: / 05-06-1999 / 02:28:18 / cg"
"Modified: / 24-09-2014 / 21:32:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 02-12-2014 / 23:57:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
largeSubtract3b
<benchmark: 'largeInt - smallInt subtraction 2'>
- |t n|
-
- "/ tests absFastPlus
+ |n|
+
+ "/ tests absFastPlus"
n := 1000 factorial negated.
100000 timesRepeat:[
@@ -2236,6 +2237,7 @@
"Modified: / 10-08-1999 / 13:28:41 / cg"
"Modified: / 26-10-1999 / 21:31:05 / stefan"
"Modified: / 24-09-2014 / 21:32:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 02-12-2014 / 23:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
largeSubtract4
@@ -3547,7 +3549,7 @@
t2 := Time millisecondsToRun:[
50 timesRepeat:[
1 to:250 do:[:i | refs at:i put:(ByteArray new:100)].
- "/ automatically freed
+ "/ automatically freed"
]
].
@@ -3563,6 +3565,8 @@
2641 3379
79 142
"
+
+ "Modified (comment): / 02-12-2014 / 23:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
benchNew2
@@ -5839,27 +5843,6 @@
"
Transcript showCR:(Time millisecondsToRun:[STXBenchmarks1 sumTo])
"
-!
-
-sumTo3
- "demonstrating inline C advantage ...
- ... however, be careful, some compilers optimize the whole
- loop by eliminating it alltogether ..."
-
-%{
- int i, cnt, val;
-
- for (cnt=1; cnt<=100; cnt++) {
- val = 0;
- for (i=1; i<=10000; i++) {
- val += i;
- }
- }
-%}.
-
- "
- Transcript showCR:(Time millisecondsToRun:[STXBenchmarks1 sumTo3])
- "
! !
!BenchmarkSTX1 methodsFor:'benchmarks-standard'!
--- a/s/benchmarks/stx/BenchmarkSmopstone.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/BenchmarkSmopstone.st Thu Dec 04 00:25:31 2014 +0000
@@ -602,12 +602,14 @@
[s atEnd] whileFalse:
[float := 0.
string := s upTo: $..
-"/ s upTo: space.
+"/ s upTo: space."
s skipThrough:space.
"In the following, digitValue is portable between ST80 and ST/V-DOS."
string do: [:char | float := float * 10.0 + char digitValue].
floats add: float].
integers = floats ifFalse: [self halt: 'Numbers do not compare.']
+
+ "Modified (comment): / 02-12-2014 / 23:57:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
stringsUpTo: n
@@ -626,3 +628,10 @@
^(1 to: n) collect: [:m | m printString perform: selector]
! !
+!BenchmarkSmopstone class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/s/benchmarks/stx/BenchmarkSortedCollectionLike.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/BenchmarkSortedCollectionLike.st Thu Dec 04 00:25:31 2014 +0000
@@ -21,13 +21,17 @@
coll addAll:randomNumbers.
randomNumbers do:[:each |
-"/ Transcript showCR:'-----------'.
-"/ Transcript showCR:(coll instVarNamed:'treeRoot').
-"/ Transcript showCR:each.
+"
+ Transcript showCR:'-----------'.
+ Transcript showCR:(coll instVarNamed:'treeRoot').
+ Transcript showCR:each.
+"
coll remove:each.
sc remove:each.
self assert:(sc asOrderedCollection = coll asOrderedCollection).
].
+
+ "Modified (format): / 02-12-2014 / 23:58:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkSortedCollectionLike methodsFor:'benchmarks'!
--- a/s/benchmarks/stx/Make.proto Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/Make.proto Thu Dec 04 00:25:31 2014 +0000
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/jv/calipel/s -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/jv/calipel/s -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview
# if you need any additional defines for embedded C code,
--- a/s/benchmarks/stx/Make.spec Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/Make.spec Thu Dec 04 00:25:31 2014 +0000
@@ -42,6 +42,7 @@
# -warnNonStandard : no warnings about ST/X extensions
# -warnEOLComments : no warnings about EOL comment extension
# -warnPrivacy : no warnings about privateClass extension
+# -warnUnused : no warnings about unused variables
#
# ********** OPTIONAL: MODIFY the next line(s) ***
# STCWARNINGS=-warn
--- a/s/benchmarks/stx/bc.mak Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/bc.mak Thu Dec 04 00:25:31 2014 +0000
@@ -30,11 +30,12 @@
!INCLUDE Make.spec
LIBNAME=libjv_calipel_s_benchmarks_stx
+MODULE_PATH=calipel\s\benchmarks\stx
RESFILES=stx.$(RES)
-LOCALINCLUDES= -I$(INCLUDE_TOP)\jv\calipel\s -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\jv\calipel\s -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
--- a/s/benchmarks/stx/stx.rc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/benchmarks/stx/stx.rc Thu Dec 04 00:25:31 2014 +0000
@@ -4,7 +4,7 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,2,32767,32767
- PRODUCTVERSION 6,2,3,0
+ PRODUCTVERSION 6,2,5,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
VALUE "InternalName", "jv:calipel/s/benchmarks/stx\0"
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "LibraryName\0"
- VALUE "ProductVersion", "6.2.3.0\0"
- VALUE "ProductDate", "Wed, 12 Mar 2014 18:40:43 GMT\0"
+ VALUE "ProductVersion", "6.2.5.0\0"
+ VALUE "ProductDate", "Wed, 03 Dec 2014 00:01:16 GMT\0"
END
END
--- a/s/jv_calipel_s.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/jv_calipel_s.st Thu Dec 04 00:25:31 2014 +0000
@@ -36,12 +36,12 @@
"list packages which are mandatory as a prerequisite.
This are packages containing superclasses of my classes and classes which
are extended by myself.
- They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+ They are mandatory, because we need these packages as a prerequisite for loading and compiling.
This method is generated automatically,
by searching along the inheritance chain of all of my classes."
^ #(
- #'stx:libbasic' "Error - superclass of BenchmarkError "
+ #'stx:libbasic' "Error - superclass of BenchmarkError"
)
!
@@ -53,8 +53,8 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
- #'stx:libbasic3' "MessageTally - referenced by BenchmarkInstance>>spyIt "
- #'stx:libcompat' "DateAndTime - referenced by BenchmarkResult>>initializeTimestamp "
+ #'stx:libbasic3' "MessageTally - referenced by BenchmarkInstance>>spyIt"
+ #'stx:libcompat' "DateAndTime - referenced by BenchmarkResult>>initializeTimestamp"
)
!
@@ -96,6 +96,9 @@
BenchmarkError
BenchmarkExecutor
BenchmarkInstance
+ BenchmarkMeasurement
+ BenchmarkMeasurementInstrument
+ BenchmarkMeasurementValueNotAvailable
BenchmarkOutcome
BenchmarkParameter
BenchmarkPlatform
@@ -105,7 +108,9 @@
BenchmarkRunner
BenchmarkSuite
#'jv_calipel_s'
+ BenchmarkCountingInstrument
BenchmarkExecutionError
+ BenchmarkExecutionTimeInstrument
BenchmarkParameterError
BenchmarkReportJSON
BenchmarkReportText
--- a/s/libInit.cc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/libInit.cc Thu Dec 04 00:25:31 2014 +0000
@@ -31,6 +31,9 @@
_BenchmarkError_Init(pass,__pRT__,snd);
_BenchmarkExecutor_Init(pass,__pRT__,snd);
_BenchmarkInstance_Init(pass,__pRT__,snd);
+_BenchmarkMeasurement_Init(pass,__pRT__,snd);
+_BenchmarkMeasurementInstrument_Init(pass,__pRT__,snd);
+_BenchmarkMeasurementValueNotAvailable_Init(pass,__pRT__,snd);
_BenchmarkOutcome_Init(pass,__pRT__,snd);
_BenchmarkParameter_Init(pass,__pRT__,snd);
_BenchmarkPlatform_Init(pass,__pRT__,snd);
@@ -40,7 +43,9 @@
_BenchmarkRunner_Init(pass,__pRT__,snd);
_BenchmarkSuite_Init(pass,__pRT__,snd);
_jv_137calipel_137s_Init(pass,__pRT__,snd);
+_BenchmarkCountingInstrument_Init(pass,__pRT__,snd);
_BenchmarkExecutionError_Init(pass,__pRT__,snd);
+_BenchmarkExecutionTimeInstrument_Init(pass,__pRT__,snd);
_BenchmarkParameterError_Init(pass,__pRT__,snd);
_BenchmarkReportJSON_Init(pass,__pRT__,snd);
_BenchmarkReportText_Init(pass,__pRT__,snd);
--- a/s/s.rc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/s.rc Thu Dec 04 00:25:31 2014 +0000
@@ -4,7 +4,7 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,2,32767,32767
- PRODUCTVERSION 6,2,4,0
+ PRODUCTVERSION 6,2,5,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
VALUE "InternalName", "jv:calipel/s\0"
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "LibraryName\0"
- VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Tue, 30 Sep 2014 09:05:07 GMT\0"
+ VALUE "ProductVersion", "6.2.5.0\0"
+ VALUE "ProductDate", "Mon, 01 Dec 2014 03:08:52 GMT\0"
END
END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/stx/BenchmarkMarkAndSweepCountInstrument.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,55 @@
+"{ Package: 'jv:calipel/s/stx' }"
+
+BenchmarkCountingInstrument subclass:#BenchmarkMarkAndSweepCountInstrument
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Smalltalk/X-Measurement'
+!
+
+
+!BenchmarkMarkAndSweepCountInstrument methodsFor:'accessing'!
+
+measurementInstrumentName
+ "Returns a human-readable name of this instrument"
+
+ ^ '# of M&S GCs'
+
+ "Created: / 01-12-2014 / 02:36:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+name
+ "Returns a human-readable name of this instrument"
+
+ ^ '# of M&S GCs'
+
+ "Created: / 27-11-2014 / 12:44:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMarkAndSweepCountInstrument methodsFor:'measurement'!
+
+measurementStart:aBenchmarkInstance
+ ObjectMemory garbageCollect.
+ ^ super measurementStart:aBenchmarkInstance
+
+ "Created: / 27-11-2014 / 13:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-12-2014 / 02:44:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMarkAndSweepCountInstrument methodsFor:'private'!
+
+getCounterValue
+ "superclass BenchmarkCountingInstrument says that I am responsible to implement this method"
+
+ ^ ObjectMemory markAndSweepCount
+
+ "Created: / 27-11-2014 / 12:45:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkMarkAndSweepCountInstrument class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/s/stx/BenchmarkPlatformStX.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/BenchmarkPlatformStX.st Thu Dec 04 00:25:31 2014 +0000
@@ -115,6 +115,20 @@
"Created: / 06-06-2013 / 09:14:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkPlatformStX methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ super initialize.
+ instruments := Array
+ with: BenchmarkExecutionTimeInstrument new
+ with: BenchmarkScavengeCountInstrument new
+ with: BenchmarkMarkAndSweepCountInstrument new
+
+ "Created: / 27-11-2014 / 13:42:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkPlatformStX methodsFor:'queries'!
isHeadless
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/stx/BenchmarkScavengeCountInstrument.st Thu Dec 04 00:25:31 2014 +0000
@@ -0,0 +1,53 @@
+"{ Package: 'jv:calipel/s/stx' }"
+
+BenchmarkCountingInstrument subclass:#BenchmarkScavengeCountInstrument
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Smalltalk/X-Measurement'
+!
+
+
+!BenchmarkScavengeCountInstrument methodsFor:'accessing'!
+
+measurementInstrumentName
+ "Returns a human-readable name of this instrument"
+
+ ^ '# of newspace GCs'
+
+ "Created: / 01-12-2014 / 02:36:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+name
+ "Returns a human-readable name of this instrument"
+
+ ^ '# of newspace GCs'
+
+ "Created: / 27-11-2014 / 12:40:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkScavengeCountInstrument methodsFor:'measurement'!
+
+measurementStart:aBenchmarkInstance
+ ObjectMemory scavenge.
+ ^ super measurementStart:aBenchmarkInstance
+
+ "Created: / 27-11-2014 / 13:33:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-12-2014 / 02:44:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkScavengeCountInstrument methodsFor:'private'!
+
+getCounterValue
+ ^ ObjectMemory scavengeCount
+
+ "Created: / 27-11-2014 / 12:43:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkScavengeCountInstrument class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/s/stx/Make.proto Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/Make.proto Thu Dec 04 00:25:31 2014 +0000
@@ -122,8 +122,10 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)BenchmarkMarkAndSweepCountInstrument.$(O) BenchmarkMarkAndSweepCountInstrument.$(H): BenchmarkMarkAndSweepCountInstrument.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkCountingInstrument.$(H) $(INCLUDE_TOP)/jv/calipel/s/BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkPlatformStX.$(O) BenchmarkPlatformStX.$(H): BenchmarkPlatformStX.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkPlatform.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkRunnerAdapterStX.$(O) BenchmarkRunnerAdapterStX.$(H): BenchmarkRunnerAdapterStX.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkScavengeCountInstrument.$(O) BenchmarkScavengeCountInstrument.$(H): BenchmarkScavengeCountInstrument.st $(INCLUDE_TOP)/jv/calipel/s/BenchmarkCountingInstrument.$(H) $(INCLUDE_TOP)/jv/calipel/s/BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)jv_calipel_s_stx.$(O) jv_calipel_s_stx.$(H): jv_calipel_s_stx.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/s/stx/Make.spec Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/Make.spec Thu Dec 04 00:25:31 2014 +0000
@@ -42,6 +42,7 @@
# -warnNonStandard : no warnings about ST/X extensions
# -warnEOLComments : no warnings about EOL comment extension
# -warnPrivacy : no warnings about privateClass extension
+# -warnUnused : no warnings about unused variables
#
# ********** OPTIONAL: MODIFY the next line(s) ***
# STCWARNINGS=-warn
@@ -50,16 +51,20 @@
STCWARNINGS=-warnNonStandard
COMMON_CLASSES= \
+ BenchmarkMarkAndSweepCountInstrument \
BenchmarkPlatformStX \
BenchmarkRunnerAdapterStX \
+ BenchmarkScavengeCountInstrument \
jv_calipel_s_stx \
COMMON_OBJS= \
+ $(OUTDIR_SLASH)BenchmarkMarkAndSweepCountInstrument.$(O) \
$(OUTDIR_SLASH)BenchmarkPlatformStX.$(O) \
$(OUTDIR_SLASH)BenchmarkRunnerAdapterStX.$(O) \
+ $(OUTDIR_SLASH)BenchmarkScavengeCountInstrument.$(O) \
$(OUTDIR_SLASH)jv_calipel_s_stx.$(O) \
--- a/s/stx/abbrev.stc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/abbrev.stc Thu Dec 04 00:25:31 2014 +0000
@@ -1,6 +1,8 @@
# automagically generated by the project definition
# this file is needed for stc to be able to compile modules independently.
# it provides information about a classes filename, category and especially namespace.
+BenchmarkMarkAndSweepCountInstrument BenchmarkMarkAndSweepCountInstrument jv:calipel/s/stx 'CalipeL-S-Smalltalk/X-Measurement' 0
BenchmarkPlatformStX BenchmarkPlatformStX jv:calipel/s/stx 'CalipeL-S-Smalltalk/X' 0
BenchmarkRunnerAdapterStX BenchmarkRunnerAdapterStX jv:calipel/s/stx 'CalipeL-S-Smalltalk/X' 2
+BenchmarkScavengeCountInstrument BenchmarkScavengeCountInstrument jv:calipel/s/stx 'CalipeL-S-Smalltalk/X-Measurement' 0
jv_calipel_s_stx jv_calipel_s_stx jv:calipel/s/stx '* Projects & Packages *' 3
--- a/s/stx/bc.mak Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/bc.mak Thu Dec 04 00:25:31 2014 +0000
@@ -30,6 +30,7 @@
!INCLUDE Make.spec
LIBNAME=libjv_calipel_s_stx
+MODULE_PATH=calipel\s\stx
RESFILES=stx.$(RES)
@@ -68,8 +69,10 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)BenchmarkMarkAndSweepCountInstrument.$(O) BenchmarkMarkAndSweepCountInstrument.$(H): BenchmarkMarkAndSweepCountInstrument.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkCountingInstrument.$(H) $(INCLUDE_TOP)\jv\calipel\s\BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkPlatformStX.$(O) BenchmarkPlatformStX.$(H): BenchmarkPlatformStX.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkPlatform.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)BenchmarkRunnerAdapterStX.$(O) BenchmarkRunnerAdapterStX.$(H): BenchmarkRunnerAdapterStX.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkScavengeCountInstrument.$(O) BenchmarkScavengeCountInstrument.$(H): BenchmarkScavengeCountInstrument.st $(INCLUDE_TOP)\jv\calipel\s\BenchmarkCountingInstrument.$(H) $(INCLUDE_TOP)\jv\calipel\s\BenchmarkMeasurementInstrument.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)jv_calipel_s_stx.$(O) jv_calipel_s_stx.$(H): jv_calipel_s_stx.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/s/stx/jv_calipel_s_stx.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/jv_calipel_s_stx.st Thu Dec 04 00:25:31 2014 +0000
@@ -22,13 +22,13 @@
"list packages which are mandatory as a prerequisite.
This are packages containing superclasses of my classes and classes which
are extended by myself.
- They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+ They are mandatory, because we need these packages as a prerequisite for loading and compiling.
This method is generated automatically,
by searching along the inheritance chain of all of my classes."
^ #(
- #'jv:calipel/s' "BenchmarkPlatform - superclass of BenchmarkPlatformStX "
- #'stx:libbasic' "LibraryDefinition - superclass of jv_calipel_s_stx "
+ #'jv:calipel/s' "BenchmarkCountingInstrument - superclass of BenchmarkMarkAndSweepCountInstrument"
+ #'stx:libbasic' "LibraryDefinition - superclass of jv_calipel_s_stx"
)
!
@@ -40,8 +40,8 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
- #'stx:libbasic2' "UUID - referenced by BenchmarkRunnerAdapterStX class>>applicationUUID "
- #'stx:libjava' "JavaNativeMethod - referenced by BenchmarkPlatformStX class>>initialize "
+ #'stx:libbasic2' "UUID - referenced by BenchmarkRunnerAdapterStX class>>applicationUUID"
+ #'stx:libjava' "JavaNativeMethod - referenced by BenchmarkRunnerAdapterStX class>>setupForPerformance"
)
!
@@ -65,8 +65,10 @@
^ #(
"<className> or (<className> attributes...) in load order"
+ BenchmarkMarkAndSweepCountInstrument
BenchmarkPlatformStX
BenchmarkRunnerAdapterStX
+ BenchmarkScavengeCountInstrument
#'jv_calipel_s_stx'
)
!
--- a/s/stx/libInit.cc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/libInit.cc Thu Dec 04 00:25:31 2014 +0000
@@ -27,8 +27,10 @@
void _libjv_calipel_s_stx_Init(pass, __pRT__, snd)
OBJ snd; struct __vmData__ *__pRT__; {
__BEGIN_PACKAGE2__("libjv_calipel_s_stx", _libjv_calipel_s_stx_Init, "jv:calipel/s/stx");
+_BenchmarkMarkAndSweepCountInstrument_Init(pass,__pRT__,snd);
_BenchmarkPlatformStX_Init(pass,__pRT__,snd);
_BenchmarkRunnerAdapterStX_Init(pass,__pRT__,snd);
+_BenchmarkScavengeCountInstrument_Init(pass,__pRT__,snd);
_jv_137calipel_137s_137stx_Init(pass,__pRT__,snd);
--- a/s/stx/stx.rc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/stx/stx.rc Thu Dec 04 00:25:31 2014 +0000
@@ -4,7 +4,7 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,2,32767,32767
- PRODUCTVERSION 6,2,4,0
+ PRODUCTVERSION 6,2,5,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
VALUE "InternalName", "jv:calipel/s/stx\0"
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "ProductName\0"
- VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Tue, 30 Sep 2014 09:05:10 GMT\0"
+ VALUE "ProductVersion", "6.2.5.0\0"
+ VALUE "ProductDate", "Mon, 01 Dec 2014 03:08:55 GMT\0"
END
END
--- a/s/tests/BenchmarkInstanceTestsA.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/BenchmarkInstanceTestsA.st Thu Dec 04 00:25:31 2014 +0000
@@ -1,7 +1,7 @@
"{ Package: 'jv:calipel/s/tests' }"
TestCase subclass:#BenchmarkInstanceTestsA
- instanceVariableNames:'log param1 param2'
+ instanceVariableNames:'log param1 param2 measurementValue'
classVariableNames:''
poolDictionaries:''
category:'CalipeL-S-Tests'
@@ -90,6 +90,36 @@
"Created: / 09-03-2014 / 22:52:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!BenchmarkInstanceTestsA methodsFor:'instrument mimicry'!
+
+measurementInstrumentName
+ ^ self name
+
+ "Created: / 01-12-2014 / 02:38:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementStart:anObject
+ "void"
+ "Created: / 28-11-2014 / 00:00:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementStop:anObject
+ "void"
+ "Created: / 28-11-2014 / 00:00:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementUnit
+ ^ '1'
+
+ "Created: / 28-11-2014 / 00:26:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+measurementValue
+ ^ measurementValue
+
+ "Created: / 01-12-2014 / 02:47:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!BenchmarkInstanceTestsA methodsFor:'parameters'!
param1
@@ -120,8 +150,10 @@
setUp
log := OrderedCollection new.
+ measurementValue := 9999
"Created: / 27-05-2013 / 22:08:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-12-2014 / 02:55:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkInstanceTestsA methodsFor:'tests'!
@@ -135,10 +167,14 @@
self assert: r outcomes size == 1.
self assert: r outcomes anyOne benchmark == b.
+ self assert: r outcomes anyOne measurements size == 1.
+ self assert: r outcomes anyOne measurements anyOne size == BenchmarkPlatform current instruments size.
+ self assert: (r outcomes anyOne measurements anyOne allSatisfy:[:each | BenchmarkPlatform current instruments includes: each instrument ]).
+
self assert: log asArray = #(#fakeSetUp #fake01 "<--warmup" #fakeSetUp #fake01 ).
"Created: / 27-05-2013 / 22:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 10-03-2014 / 10:13:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-11-2014 / 23:58:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_02
@@ -317,6 +353,43 @@
"Created: / 09-03-2014 / 23:36:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 10-03-2014 / 10:14:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_07a
+ "Tests custom instrument"
+
+ | b r |
+
+ b := BenchmarkInstance new instance:self selector:#'fake04b'.
+ r := b run: BenchmarkResult new with: Dictionary new executor: (BenchmarkExecutor new instruments: (Array with: self)).
+
+ self assert: r outcomes anyOne measurements size == 1.
+ self assert: r outcomes anyOne measurements anyOne size == (BenchmarkPlatform current instruments size + 1).
+ self assert: (r outcomes anyOne measurements anyOne contains:[:e | e instrument == self]).
+
+ self assert: log asArray = #(#fakeSetUp #fake03 #fakeTearDown1 #fakeTearDown2"<--warmaup" #fakeSetUp #fake03 #fakeTearDown1 #fakeTearDown2)
+
+ "Created: / 27-11-2014 / 23:58:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_07b
+ "Tests custom instrument"
+
+ | b r |
+
+ measurementValue := BenchmarkMeasurementValueNotAvailable instance.
+ b := BenchmarkInstance new instance:self selector:#'fake04b'.
+ r := b run: BenchmarkResult new with: Dictionary new executor: (BenchmarkExecutor new instruments: (Array with: self)).
+
+ self assert: r outcomes anyOne measurements size == 1.
+ self assert: r outcomes anyOne measurements anyOne size == (BenchmarkPlatform current instruments size + 1).
+ self assert: (r outcomes anyOne measurements anyOne contains:[:e | e instrument == self]).
+
+ self assert: log asArray = #(#fakeSetUp #fake03 #fakeTearDown1 #fakeTearDown2"<--warmaup" #fakeSetUp #fake03 #fakeTearDown1 #fakeTearDown2).
+
+ String streamContents: [:s | BenchmarkReport text write: r on: s ]
+
+ "Created: / 01-12-2014 / 02:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkInstanceTestsA class methodsFor:'documentation'!
--- a/s/tests/BenchmarkRunnerTests.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/BenchmarkRunnerTests.st Thu Dec 04 00:25:31 2014 +0000
@@ -195,8 +195,8 @@
runner main: (Array with:'--arguments' with: file pathName).
self assert: runner result outcomes size = 1.
- self assert: runner result outcomes anElement times size = 5.
- self assert: runner result outcomes anElement times first < 200.
+ self assert: runner result outcomes anyOne times size = 5.
+ self assert: runner result outcomes anyOne times first < 200.
] ensure:[
file remove
@@ -223,8 +223,8 @@
runner main: (Array with:'--script' with: file pathName).
self assert: runner result outcomes size = 1.
- self assert: runner result outcomes anElement times size = 5.
- self assert: runner result outcomes anElement times first < 200.
+ self assert: runner result outcomes anyOne times size = 5.
+ self assert: runner result outcomes anyOne times first < 200.
] ensure:[
file remove
@@ -362,6 +362,38 @@
self assert: argv asArray = #('Suite1#bench1')
"Created: / 08-03-2014 / 15:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_basic_07a
+ "Test custom instruments"
+
+ | runner |
+
+ runner := BenchmarkRunner new.
+ runner main: #('-i' 'BenchmarkInstanceTestsA' 'BenchmarkTestsSuiteA').
+
+ self assert: runner result outcomes size = 2.
+ self assert: runner result outcomes anyOne measurements size == 5.
+ self assert: runner result outcomes anyOne measurements anyOne size == (BenchmarkPlatform current instruments size + 1).
+ self assert: (runner result outcomes anyOne measurements anyOne contains:[:e | e instrument class == BenchmarkInstanceTestsA ]).
+
+ "Created: / 28-11-2014 / 00:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_basic_07b
+ "Test custom instruments"
+
+ | runner |
+
+ runner := BenchmarkRunner new.
+ runner main: #('--instrument' 'BenchmarkInstanceTestsA' 'BenchmarkTestsSuiteA').
+
+ self assert: runner result outcomes size = 2.
+ self assert: runner result outcomes anyOne measurements size == 5.
+ self assert: runner result outcomes anyOne measurements anyOne size == (BenchmarkPlatform current instruments size + 1).
+ self assert: (runner result outcomes anyOne measurements anyOne contains:[:e | e instrument class == BenchmarkInstanceTestsA ]).
+
+ "Created: / 28-11-2014 / 00:17:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!BenchmarkRunnerTests class methodsFor:'documentation'!
--- a/s/tests/Make.spec Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/Make.spec Thu Dec 04 00:25:31 2014 +0000
@@ -42,6 +42,7 @@
# -warnNonStandard : no warnings about ST/X extensions
# -warnEOLComments : no warnings about EOL comment extension
# -warnPrivacy : no warnings about privateClass extension
+# -warnUnused : no warnings about unused variables
#
# ********** OPTIONAL: MODIFY the next line(s) ***
# STCWARNINGS=-warn
--- a/s/tests/bc.mak Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/bc.mak Thu Dec 04 00:25:31 2014 +0000
@@ -30,6 +30,7 @@
!INCLUDE Make.spec
LIBNAME=libjv_calipel_s_tests
+MODULE_PATH=calipel\s\tests
RESFILES=tests.$(RES)
--- a/s/tests/jv_calipel_s_tests.st Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/jv_calipel_s_tests.st Thu Dec 04 00:25:31 2014 +0000
@@ -22,13 +22,13 @@
"list packages which are mandatory as a prerequisite.
This are packages containing superclasses of my classes and classes which
are extended by myself.
- They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+ They are mandatory, because we need these packages as a prerequisite for loading and compiling.
This method is generated automatically,
by searching along the inheritance chain of all of my classes."
^ #(
- #'stx:goodies/sunit' "TestAsserter - superclass of BenchmarkInstanceTestsA "
- #'stx:libbasic' "LibraryDefinition - superclass of jv_calipel_s_tests "
+ #'stx:goodies/sunit' "TestAsserter - superclass of BenchmarkInstanceTestsA"
+ #'stx:libbasic' "LibraryDefinition - superclass of jv_calipel_s_tests"
)
!
@@ -40,7 +40,7 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
- #'jv:calipel/s' "BenchmarkExecutionError - referenced by BenchmarkRunnerTests>>test_basic_03a "
+ #'jv:calipel/s' "BenchmarkExecutionError - referenced by BenchmarkRunnerTests>>test_basic_03a"
)
!
--- a/s/tests/tests.rc Thu Dec 04 00:12:57 2014 +0000
+++ b/s/tests/tests.rc Thu Dec 04 00:25:31 2014 +0000
@@ -4,7 +4,7 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,2,32767,32767
- PRODUCTVERSION 6,2,4,0
+ PRODUCTVERSION 6,2,5,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
VALUE "InternalName", "jv:calipel/s/tests\0"
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "ProductName\0"
- VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Tue, 30 Sep 2014 09:05:08 GMT\0"
+ VALUE "ProductVersion", "6.2.5.0\0"
+ VALUE "ProductDate", "Tue, 02 Dec 2014 23:33:46 GMT\0"
END
END