compiler/benchmarks/PPCBenchmark.st
changeset 516 3b81c9e53352
parent 504 0fb1f0799fc1
parent 515 b5316ef15274
child 520 9ccc84deaea0
--- a/compiler/benchmarks/PPCBenchmark.st	Fri Jul 31 14:07:31 2015 +0100
+++ b/compiler/benchmarks/PPCBenchmark.st	Mon Aug 17 12:56:02 2015 +0100
@@ -4,7 +4,7 @@
 
 Object subclass:#PPCBenchmark
 	instanceVariableNames:'sources report contextClass compile parser context input
-		configuration profile'
+		configuration profile repetitions'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'PetitCompiler-Benchmarks-Core'
@@ -63,6 +63,16 @@
     "Modified: / 16-05-2015 / 19:19:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!PPCBenchmark methodsFor:'accessing'!
+
+repetitions
+    ^ repetitions
+!
+
+repetitions: anObject
+    repetitions := anObject
+! !
+
 !PPCBenchmark methodsFor:'benchmark support'!
 
 compile: value
@@ -263,15 +273,12 @@
 
     self setupSmalltalkGrammarCompiled.
 
-    time := [ input do: [ :source | parser parse: source withContext: context ]] timeToRun asMilliSeconds.
-    
-    self reportInput: input time: time name: 'Compiled Smalltalk Grammar'.
-
-"	
-    size := input inject: 0 into: [:r :e | r + e size  ].
-    Transcript crShow: 'Compiled Grammar time: ', time asString.
-    Transcript crShow: 'Time per character: ', (time / size * 1000.0) asString, ' microseconds'.
-"
+    repetitions timesRepeat: [ 
+        time := [ input do: [ :source | 
+            parser parse: source withContext: context 
+        ]] timeToRun asMilliSeconds.
+        self reportInput: input time: time name: 'Compiled Smalltalk Grammar'.
+    ]
 !
 
 benchmarkSmalltalkGrammarTokenized
@@ -279,12 +286,12 @@
 
     self setupSmalltalkGrammarTokenized.
     
-    time := [ input do: [ :source | 
-            parser parse: source withContext: context ] 
-    ] timeToRun asMilliSeconds.
-    
-    self reportInput: input time: time name: 'Tokenized Smalltalk Grammar'.
-
+    repetitions timesRepeat: [ 	
+        time := [ input do: [ :source | 
+                parser parse: source withContext: context ] 
+        ] timeToRun asMilliSeconds.
+        self reportInput: input time: time name: 'Tokenized Smalltalk Grammar'.
+    ]
 "	
     size := input inject: 0 into: [:r :e | r + e size  ].
     Transcript crShow: 'Compiled Grammar time: ', time asString.
@@ -443,6 +450,8 @@
 
     compile := false.
     profile := false.
+    
+    repetitions := 3
 ! !
 
 !PPCBenchmark methodsFor:'meta'!
@@ -497,7 +506,8 @@
 setupExpressionGrammarCompiled
     
     configuration := PPCConfiguration universal.
-    configuration arguments name: #PPCompiledExpressionGrammar.
+    configuration arguments parserName: #PPCompiledExpressionGrammar.
+    configuration arguments scannerName: #PPCompiledExpressionScanner.
     parser := PPExpressionGrammar new compileWithConfiguration: configuration.
     context := self context.
     context initializeFor: parser.
@@ -507,7 +517,8 @@
 setupExpressionGrammarTokenized
     
     configuration := PPCConfiguration tokenizing.
-    configuration arguments name: #PPTokenizedExpressionGrammar.
+    configuration arguments parserName: #PPTokenizedExpressionGrammar.
+    configuration arguments scannerName: #PPTokenizedExpressionScanner.
     parser := PPExpressionGrammar new compileWithConfiguration: configuration.
     context := self context.
     context initializeFor: parser.
@@ -546,7 +557,8 @@
 setupLL1ExpressionGrammarCompiled
     
     configuration := PPCConfiguration universal.
-    configuration arguments name: #PPCompiledLL1ExpressionGrammar.
+    configuration arguments parserName: #PPCompiledLL1ExpressionGrammar.
+    configuration arguments scannerName: #PPCompiledLL1ExpressionScanner.
     parser := PPLL1ExpressionGrammar new compileWithConfiguration: configuration.
     context := self context.
     context initializeFor: parser.
@@ -556,7 +568,8 @@
 setupLL1ExpressionGrammarTokenized
     
     configuration := PPCConfiguration tokenizing.
-    configuration arguments name: #PPTokenizedLL1ExpressionGrammar.
+    configuration arguments parserName: #PPTokenizedLL1ExpressionGrammar.
+    configuration arguments scannerName: #PPTokenizedLL1ExpressionScanner.
     parser := PPLL1ExpressionGrammar new compileWithConfiguration: configuration.
     context := self context.
     context initializeFor: parser.
@@ -579,7 +592,8 @@
 setupSmalltalkGrammarCompiled
 
     configuration := PPCConfiguration universal.
-    configuration arguments name: #PPCompiledSmalltalkGrammar.
+    configuration arguments parserName: #PPCompiledSmalltalkGrammar.
+    configuration arguments scannerName: #PPCompiledSmalltalkScanner.
     configuration arguments profile: profile.
     
     parser := PPSmalltalkGrammar new compileWithConfiguration: configuration.
@@ -596,7 +610,8 @@
 setupSmalltalkGrammarTokenized
 
     configuration := PPCConfiguration tokenizing.
-    configuration arguments name: #PPTokenizedSmalltalkGrammar.
+    configuration arguments parserName: #PPTokenizedSmalltalkGrammar.
+    configuration arguments scannerName: #PPTokenizedSmalltalkScanner.
     configuration arguments profile: profile.
     
     parser := PPSmalltalkGrammar new compileWithConfiguration: configuration.
@@ -622,7 +637,7 @@
 
 setupSmalltalkNoopParserTokenized
 
-    configuration := PPCConfiguration LL1.
+    configuration := PPCConfiguration tokenizing.
     parser := PPCSmalltalkNoopParser new compileWithConfiguration: configuration.
     context := PPCContext new.
     context initializeFor: parser.