2016-09-22 2 views
2

Ich bin ein jmh benchmark ausgeführt, aber die Aufrufe in jeder Studie sind in Serie. Wie kann ich die Aufrufe gleichzeitig ausführen lassen?jmh: ​​Benchmark gleichzeitig ausführen

Hier ist eine Zusammenfassung meines Code:

@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) 
    } 
} 

Dies wird A drucken und dann B. Wird nie zwei aufeinander folgend A oder der B geben.

Antwort

3

Wenn Sie möchten, explizit die Gesamtmenge der Threads definieren während des Tests zu verwenden, müssen Sie Ihre Testmethode mit @Threads(numberOfThreads) als nächstem (Methode mit @Benchmark kommentierte) mit Anmerkungen versehen:

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

In diesem Beispiel 10 Threads führen die Testmethode gleichzeitig aus.

Als Erinnerung, hier ist ein Teil des Dokuments, das diese Anmerkung beschreibt:

@Threads: Anzahl der Threads zu verwenden für den Test. Der Standardwert ist Runtime.getRuntime().availableProcessors().

Verwandte Themen