Dieser Beitrag auf javapapers.com zeigt, wie Sie einen JMH -Benchmark in Maven ausführen, indem MVN Exec: Exec eingeben. Das Ausführen von JMH in Maven ist ziemlich praktisch, da Sie sie problemlos aus einer IDE -Laufkonfiguration oder in einer Maven -Phase ausführen können. />
Normalerweise startet JMH ein weiteres VM, um die Benchmarks zu betreiben. Sie werden also mindestens 3 VMs gleichzeitig ausgeführt. Klasse direkt in den VM Maven läuft. Als ich jedoch versuchte, Maven so zu konfigurieren, dass JMH mit Exec: Java ausführt, stürzt der Benchmark wegen fehlender Klassen ab:
Code: Select all
# JMH 1.11.3 (released 40 days ago)
# VM version: Error: Could not find or load main class org.openjdk.jmh.runner.VersionMain
# VM invoker: C:\Program Files\Java\jdk1.7.0\jre\bin\java.exe
[...]
# Run progress: 0.00% complete, ETA 00:02:40
# Fork: 1 of 1
Error: Could not find or load main class org.openjdk.jmh.runner.ForkedMain
Hier ist der relevante Teil der pom.xml :
Code: Select all
org.codehaus.mojo
exec-maven-plugin
1.4.0
my.Benchmark
Und hier ist, wie ich JMH von My.Benchmark :
ausführe
Code: Select all
public static void main(String[] args) throws RunnerException {
Options options = new OptionsBuilder().include(my.Benchmark.class.getSimpleName())
.forks(1).build();
new Runner(options).run();
}
Ich erkenne, dass JMH die Java.class.Path -Systemeigenschaft verwendet, um den Klassenpfad für die gabelhaften VMs zu bestimmen und dass diese Eigenschaft keine Maven -Projektabhängigkeiten enthält. Aber was ist der bevorzugte Weg, um damit umzugehen?
Dieser Beitrag auf javapapers.com zeigt, wie Sie einen JMH -Benchmark in Maven ausführen, indem MVN Exec: Exec eingeben. Das Ausführen von JMH in Maven ist ziemlich praktisch, da Sie sie problemlos aus einer IDE -Laufkonfiguration oder in einer Maven -Phase ausführen können. />
Normalerweise startet JMH ein weiteres VM, um die Benchmarks zu betreiben. Sie werden also mindestens 3 VMs gleichzeitig ausgeführt. Klasse direkt in den VM Maven läuft. Als ich jedoch versuchte, Maven so zu konfigurieren, dass JMH mit Exec: Java ausführt, stürzt der Benchmark wegen fehlender Klassen ab:
[code]# JMH 1.11.3 (released 40 days ago)
# VM version: Error: Could not find or load main class org.openjdk.jmh.runner.VersionMain
# VM invoker: C:\Program Files\Java\jdk1.7.0\jre\bin\java.exe
[...]
# Run progress: 0.00% complete, ETA 00:02:40
# Fork: 1 of 1
Error: Could not find or load main class org.openjdk.jmh.runner.ForkedMain
[/code]
Hier ist der relevante Teil der pom.xml :
[code]
org.codehaus.mojo
exec-maven-plugin
1.4.0
my.Benchmark
[/code]
Und hier ist, wie ich JMH von My.Benchmark :
ausführe[code]public static void main(String[] args) throws RunnerException {
Options options = new OptionsBuilder().include(my.Benchmark.class.getSimpleName())
.forks(1).build();
new Runner(options).run();
}
[/code]
Ich erkenne, dass JMH die Java.class.Path -Systemeigenschaft verwendet, um den Klassenpfad für die gabelhaften VMs zu bestimmen und dass diese Eigenschaft keine Maven -Projektabhängigkeiten enthält. Aber was ist der bevorzugte Weg, um damit umzugehen?