@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"プロパティにセットすることで出力をリダイレクトできます:
@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"
}
----
ダウンロードはこちらから。
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