Scalaで処理時間を計測

Javaだとこんな感じ。

    public static void main(String[] args) {
        long start = System.currentTimeMillis()
        // 重い処理
        doHeavyProcess()
        System.out.println((System.currentTimeMillis() - start) + "msec")
    }

ScalaJavaAPIが使えるので、ほぼ同じコードで実現できるのだけれど、
このパターンを関数にしてみました。

    def main(args:Array[String]) {
        printExecutionTime {
            // 重い処理
            doHeavyProcess()
        }
    }
    /** 引数の処理の実行時間を表示 */
    def printExecutionTime(proc: => Unit) = {
        val start = System.currentTimeMillis
        proc
        println((System.currentTimeMillis - start) + "msec")
    }