私はコレクションを変更するベンチマークを作成しようとしています。 問題は、呼び出しごとにデータを初期化する方法がわかりません。JMHの呼び出しごとにデータを初期化する方法は?
Test.DATAが200個の要素を含むコレクションであるとします。
test
メソッドは、a.isTrue()
の値に基づいてデータを削除します。
私は@Setup
がJUnitの@Setup
に似ていることを知っています。 @Before
を使いたいですが、JMHで見つけられませんでした。 test
メソッドが呼び出される前にデータを初期化するにはどうすればよいですか?
ありがとうございます。
@State(Scope.Thread)
public class JavaCollectionBenchmark {
List<Foo> cols;
@Setup
public void prepare(){
cols= new ArrayList<>(Test.DATA);
}
@Benchmark
public long test(){
if(cols.size() != 200) {
System.out.println("SECOND TIME DOESN'T WORK!");
System.exit(0);
}else{
System.out.println("FIRST TIME");
}
cols.removeIf(a-> a.isTrue());
return cols.size();
}
}
は、あなたがJMHサンプルを読みましたか?特に、この例はあなたの質問に直接答えます:http://hg.openjdk.java.net/code-tools/jmh/file/bcec9a03787f/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_38_PerInvokeSetup .java –
ああ申し訳ありませんが、答えがサンプルに含まれているときにこの質問をしてはいけません。私はすべてのコード例を読まなかったことを認めます。何らかの理由で、私の目は州や備品を見続けていました。 – hussachai