@@ -22,23 +22,31 @@ object Bench extends Driver {
22
22
new compiler.Run() compile command.files
23
23
}*/
24
24
25
+ private var numRuns = 1
26
+
25
27
lazy val compiler = new Compiler
26
28
27
29
override def newCompiler (): Compiler = compiler
28
30
29
- override def doCompile (compiler : Compiler , fileNames : List [String ])(implicit ctx : Context ): Reporter = {
31
+ override def doCompile (compiler : Compiler , fileNames : List [String ])(implicit ctx : Context ): Reporter =
30
32
if (new config.Settings .Setting .SettingDecorator [Boolean ](ctx.base.settings.resident).value(ctx))
31
33
resident(compiler)
32
34
else
33
- super .doCompile(compiler, fileNames)
34
- }
35
+ (emptyReporter /: (0 until numRuns))((_, _) => super .doCompile(compiler, fileNames))
35
36
36
- val N = 10
37
+ def extractNumArg (args : Array [String ], name : String , default : Int = 1 ): (Int , Array [String ]) = {
38
+ val pos = args indexOf name
39
+ if (pos < 0 ) (default, args)
40
+ else (args(pos + 1 ).toInt, (args take pos) ++ (args drop (pos + 2 )))
41
+ }
37
42
38
43
override def main (args : Array [String ]): Unit = {
39
- for (i <- 0 until N ) {
44
+ val (numCompilers, args1) = extractNumArg(args, " #compilers" )
45
+ val (numRuns, args2) = extractNumArg(args1, " #runs" )
46
+ this .numRuns = numRuns
47
+ for (i <- 0 until numCompilers) {
40
48
val start = System .nanoTime()
41
- process(args )
49
+ process(args2 )
42
50
println(s " time elapsed: ${(System .nanoTime - start) / 1000000 }ms " )
43
51
}
44
52
}
0 commit comments