2016-07-19 15 views
0

Wir haben viele JMH-Tests und wenn die Tests (unter Verwendung) ausgeführt werden, nehmen sie eine lange Zeit. Alle unsere Tests sind single-threaded.Wie man JMH in weniger Zeit laufen lässt

Kann jemand empfehlen, wie man die Ausführung von JMH-Tests am besten parallelisiert? Unsere Build-Box verfügt über reichlich CPU-Kapazität.

Ausgabe von JMH gradle Plugin, wie wir es derzeit konfiguriert haben (alle Standardeinstellungen)

# JMH 1.12 ... 
# VM options: <none> 
# Warmup: 20 iterations, 1 s each 
# Measurement: 20 iterations, 1 s each 
# Timeout: 10 min per iteration 
# Threads: 1 thread, will synchronize iterations 
# Benchmark mode: Throughput, ops/time 

Antwort

2

Leistungstests sollen nicht für Stabilität/Reproduzierbarkeit Gründen parallel ausgeführt werden. JMH würde sich tatsächlich beschweren, wenn Sie versuchen, mehrere Instanzen von JMH auf demselben System auszuführen.

Sie können die Ausführungszeit verkürzen, wenn die Teststabilität nicht verletzt wird. Z.B. Wenn Sie wissen, dass sich die Workloads nach 5 Sekunden Aufwärmzeit bei einigen Punkten stabilisieren, können Sie 5x1s Warmup-Iterationen durchführen. Dito für die Messung: Wenn Sie wissen, dass weniger Messwiederholungen die Fehler, die Sie erhalten, nicht beeinflussen, können Sie diese ebenfalls reduzieren. Das Gleiche gilt für die Anzahl der Gabeln.

JMH bietet sowohl Annotationen den Standardbetriebsmodus (siehe zum Beispiel JMHSample20_Annotations, und die Befehlszeilenoptionen zu (laufen mit -h außer Kraft zu setzen, die Liste zu bekommen).

+0

Dank Aleksey, schätzt Ihre Antwort. Das alles macht Sinn. –