Hier
eine kurze Beschreibung, wie man ein JMH-Projekt in Eclipse aufsetzen kann,
für Leute, die mit Eclipse, aber vielleicht nicht so sehr mit Maven vertraut
sind. Es gibt natürlich auch andere Wege, wie man einen JMH-Benchmark
anlegen kann (siehe /JMH/).
Maven-Projekt in Eclipse erzeugen
JMH verwendet Maven. Deshalb muss man ein Maven-Projekt in Eclipse
erzeugen über die Menüs
File
=> New => Project => Maven => Maven Project
.
Dann füllt man die Formulare aus (und legt die Workspace Location fest,
etc.), bis man zum Formular "
Select an
Archetype
" kommt. Hier muss man aus dem Maven Central Katalog
den Archetyp für JMH hinzufügen. Dazu klickt man auf
Configure
=>
Add Remote Catalog
Als Katalogdatei muss man
angeben:
http://repo1.maven.org/maven2/archetype-catalog.xml
Als Beschreibung wäre "Maven
Central" sinnvoll. Aus dem Maven Central Katalog muss dann der Archetyp
org.openjdk.jmh:jmh-java-benchmark-archetype
ausgewählt werden Am besten
findet man ihn, wenn man die Filterfunktion verwendet und als Filter "jmh"
angibt.
Wenn die Aufforderung "
Enter
an artifact id
" kommt, muss man folgende Angaben machen:
groupId=<package
name, z.B. jmh>
artifactId=<project name, z.B. MyBenchmark>
version=<versin, z.B. 1.0>
package=<package name, z.B. jmh>
Danach die Projekt-Erzeugung
abschließen. Eclipse legt nun in der Workspace Location ein neues Projekt
an mit dem Namen, der als "artifactId" angegeben wurde. Es wird ein Package
im Directory
src/main/java
mit
der "groupId" als Package-Name angelegt. In diesem Package-Directory
gibt es eine Source-Datei
MyBenchmark.java
.
Sie dient als Vorlage für einen JMH-Benchmark. Man kann sie hernehmen
und editieren. Man kann aber auch nach Belieben eigene Packages und Sourcen
importieren oder anlegen, wie in jedem anderen Projekt auch. Am besten
baut man sich eine Starter-Klasse mit
main()
-Methode,
in der die JMH-Optionen zusammengebaut, dem JMH-Runner übergeben und der
der Runner gestartet wird.
Annotation Processing ermöglichen
Für JMH werden Annotationen
(wie z.B.
@Benchmark
)
in die eigenen Sourcen eingefügt. Der Annotation Processor von JMH sucht
sie in den Sourcen und generiert daraus den eigentlichen Benchmark. Die
generierten Sourcen liegen hinterher im
target
Directory des Eclipse Projekts.
Damit Maven das Annotation
Processing anstoßen kann, muss zuvor der
m2e-apt
Konnektor installiert
werden. Das kann man über den Eclipse Marketplace machen, d.h. über
die Menüs
Help
=> Eclipse Marketplace
,
Dort nach "m2e-apt" suchen
und installieren. Danach das automatische Annotation Processing einschalten
über:
Windows
=> Preferences => Maven => Annotation Processing
=>
Automatically
configure.
Build and run
Jetzt muss man nur noch das
Projekt bauen. Eclipse sollte sich um alles kümmern (annotation processing,
compiling, classpath setting, etc.).
main()
-Klasse
auswählen und laufen lassen.
Trouble Shooting: Projektbeschreibungsdatei
pom.xml
anpassen
Im Working Directory des Eclipse-Projekts
liegt die Maven-Projektbeschreibung in der Datei
pom.xml
.
Bisweilen muss man diese Datei modifizieren, falls es Probleme bei der
Übersetzung der Sourcen gibt.
Language level:
Es könnte sein, dass das Sprachlevel nicht passt, weil in den Sourcen
die neuesten Sprachmittel verwendet werden. Dann muss man in der
pom.xml
Datei
die Properties ändern:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmh.version>1.12</jmh.version>
<javac.target>1.6</javac.target>
<uberjar.name>benchmarks</uberjar.name>
</properties>
External libraries:
Wenn die eigenen Sources externe Bibliotheken brauchen (z.B.
commons-math.jar
)
dann müssen sie als Dependency in der
pom.xml
Datei eingetragen werden:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math</artifactId>
<version>2.0</version>
</dependency>
|