2016-09-22 6 views
2

私はjmh benchmarkを実行していますが、各試行の呼び出しは連続して発生しています。呼び出しを並行して実行するにはどうすればよいですか?jmh:ベンチマークを同時に実行する

は、ここに私のコードの概要です:

@State(Scope.Benchmark) 
public class FooBenchmark { 
    @Param({"123456"}) 
    public int barId; 

    @Setup 
    public void setup() { 
    } 

    @Benchmark 
    public void run(Blackhole hole) { 
     System.out.println("A"); // for proof that it's serial (see below) 
     ... 
     System.out.println("B"); // for proof that it's serial (see below) 
    } 
} 

これはAを印刷し、その後B. 2つの連続したAさんやBさんを与えることはありません。

答えて

3

明示的にテスト中に使用するスレッドの合計量を定義する場合は、次のように@Threads(numberOfThreads)であなたの試験方法(@Benchmarkで注釈を付け法)というアノテーションを付加する必要があります。

@Threads(10) 
@Benchmark 
public void run(Blackhole hole) { 

この例では、 10スレッドは、テストメソッドを同時に実行します。リマインダーとして

が、ここでこの注釈を記述するドキュメントの一部です:

@Threads:スレッドの数は、テストのために使用します。デフォルトは Runtime.getRuntime().availableProcessors()です。

関連する問題