From b405110e7b0fb5ccba177b9ac48c8c6d1ce2ac65 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 23 Jun 2012 13:52:09 -0400 Subject: [PATCH] compilation timings --- compile/integration/AggressiveCompile.scala | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/compile/integration/AggressiveCompile.scala b/compile/integration/AggressiveCompile.scala index 03d728353..ac37e0fc7 100644 --- a/compile/integration/AggressiveCompile.scala +++ b/compile/integration/AggressiveCompile.scala @@ -67,7 +67,9 @@ class AggressiveCompile(cacheFile: File) { val sources = if(order == Mixed) incSrc else scalaSrcs val arguments = cArgs(Nil, absClasspath, outputDirectory, options.options) - compiler.compile(sources, changes, arguments, callback, maxErrors, cache, log) + timed("Scala compilation", log) { + compiler.compile(sources, changes, arguments, callback, maxErrors, cache, log) + } } def compileJava() = if(!javaSrcs.isEmpty) @@ -75,8 +77,12 @@ class AggressiveCompile(cacheFile: File) import Path._ val loader = ClasspathUtilities.toLoader(searchClasspath) def readAPI(source: File, classes: Seq[Class[_]]) { callback.api(source, ClassToAPI(classes)) } - Analyze(outputDirectory, javaSrcs, log)(callback, loader, readAPI) { - javac.compile(javaSrcs.toArray, absClasspath.toArray, outputDirectory, options.javacOptions.toArray, maxErrors, log) + timed("Java compilation and analysis", log) { + Analyze(outputDirectory, javaSrcs, log)(callback, loader, readAPI) { + timed("Java compilation", log) { + javac.compile(javaSrcs.toArray, absClasspath.toArray, outputDirectory, options.javacOptions.toArray, maxErrors, log) + } + } } } if(order == JavaThenScala) { compileJava(); compileScala() } else { compileScala(); compileJava() } @@ -89,6 +95,14 @@ class AggressiveCompile(cacheFile: File) } IncrementalCompile(sourcesSet, entry, compile0, analysis, getAnalysis, outputDirectory, log) } + private[this] def timed[T](label: String, log: Logger)(t: => T): T = + { + val start = System.nanoTime + val result = t + val elapsed = System.nanoTime - start + log.debug(label + " took " + (elapsed/1e9) + " s") + result + } private[this] def logInputs(log: Logger, javaCount: Int, scalaCount: Int, out: File) { val scalaMsg = Util.counted("Scala source", "", "s", scalaCount)