blob: 9bcc909e5b335d813d051c174c7e7c3d6e48b009 [file] [log] [blame] [view]
# Geode Core Module
## JMH - Micro Benchmarks
### Running from Gradle
The JMH plugin appears to have issues with the latest Gradle daemon so disable it when running JMH
from Gradle. The following will run all JMH benchmarks.
```console
./gradlew jmh
```
#### Specific Benchmark
Add the `-Pjmh.includes=<benchmark>` project property to run a specific benchmark.
```console
./gradlew jmh -Pjmh.include=<benchmark>
```
#### With JMH Profiler
Add the `-Pjmh.profilers=<profilers>` project property to run benchmarks with specific JMH profilers enabled.
```console
./gradlew jmh -Pjmh.include=<benchmark> -Pjmh.profilers=<profilers>
```
#### All JMH options
Specify all options as `-Pjmh.<option>=<value>`. All options are defined by the
[JMH Gradle Plugin](https://github.com/melix/jmh-gradle-plugin#configuration-options). Not all
options have been passed through. You can add missing option in the jmh.gradle file.
```console
./gradlew jmh -Pjmh.include=<benchmark> -Pjmh.jvm=/path/to/java11/bin/java
```
### Running with JMH Uber Jar
#### Building
You can build an uber jar containing all the built JMF benchmarks and runtime dependencies.
```console
./gradlew jmhJar
```
### Running
Due to vesion mismatches on jopt you cannot get `-h` help output from JMH. Please see
[JMH Tutorial](https://github.com/guozheng/jmh-tutorial/blob/master/README.md) for command line
options.
#### Specific Benchmark
To list benchmarks.
```console
java -jar geode-core/build/libs/geode-core-*-jmh.jar -l
```
Run with specific benchmark.
```console
java -jar geode-core/build/libs/geode-core-*-jmh.jar <options> <benchmark>
```
#### With JMH Profiler
To get a list of available profilers.
```console
java -jar geode-core/build/libs/geode-core-*-jmh.jar -lprof
```
Run with specific profiler.
```console
java -jar geode-core/build/libs/geode-core-*-jmh.jar <options> -prof:<profiler> <benchmark>
```