Saturday, May 28, 2011

@Benchmark annotation for Groovyをリリース!

@Benchmarkアノテーションはメソッドの実行時間をコードの追加なしで計測できるようにしてくれます。次の例は@Benchmarkの基本的な使用例です:
----
@Benchmark
def method() {
    // an operation takes 1 ms
}

method()
----
この場合標準出力に"1000000"が出力されます. @Benchmarkは時間をナノ秒で表します。

出力形式に手を加える為のオプションが2つあります:
----
@Benchmark(prefix = 'execution time of method(): ', suffix = ' ns')
def method() {
    // an operation takes 1 ms
}

method()
----
こうすると出力は"execution time of method(): 1000000 ns"となります。

@Benchmarkは出力にthis.println(value)を使います。なので目的に沿ったwriterを"out"プロパティにセットすることで出力をリダイレクトできます:
----
def results = new StringBuffer()
this.setProperty("out", new StringBufferWriter(results))

// method calls

this.setProperty("out", null)

results.toString().eachLine { result ->
    println "${result.asType(int.class) / 1000000} ms"
}
----

ダウンロードはこちらから。

No comments:

Post a Comment