nanobench のインターフェース変えた
lambda 使わないほうがいいんじゃない?という意見を kazuho さんから頂いたので、使わないようにしてみた。 lambda 使わない方がデバッガで追いやすいというのは一理あるので、それもまたいいのかな、と。
というわけで、以下のように書けばいいという感じになった。
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListBenchmark {
// Benchmarking method must be started with 'bench'.
public void benchArrayList() {
List<Integer> l = new ArrayList<>();
for (int i=0; i<1_000_000; ++i) {
l.add(i);
}
}
public void benchLinkedList() {
List<Integer> l = new LinkedList<>();
for (int i=0; i<1_000_000; ++i) {
l.add(i);
}
}
}
/^bench/
から始まってるメソッドが走っていい感じにベンチマークが取られます。
これを javac でコンパイルして nanobench.jar から実行させればいいという寸法。
> javac ListBenchmark.java
> java -jar nanobench.jar ListBenchmark
Score:
benchArrayList: 1 wallclock secs ( 1.03 usr + 0.10 sys = 1.13 CPU) @ 142.79/s (n=162)
benchLinkedList: 2 wallclock secs ( 1.07 usr + 0.15 sys = 1.21 CPU) @ 146.54/s (n=178)
Comparison chart:
Rate benchArrayList benchLinkedList
benchArrayList 143/s -- -3%
benchLinkedList 147/s 3% --
nanobench.jar があれば、どこでも動くので便利。
Published: 2014-11-28(Fri) 08:09