jmh-basics: JMH tutorial module (dead-code elimination, Blackhole, constant folding, warmup/forks, state scopes, -prof gc)
Eight benchmark/demo classes, a deterministic test suite, and 12 captured output files generated by scripts/run-all.sh on JDK 25.0.5 (Temurin) with JMH 1.37. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b6Fj2JNt7dRev4pZPe
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
# JMH version: 1.37
|
||||
# VM version: JDK 25.0.5, OpenJDK 64-Bit Server VM, 25.0.5+8-LTS
|
||||
# VM invoker: /tmp/tools/jdk-25.0.5+8/bin/java
|
||||
# Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable)
|
||||
# Warmup: 3 iterations, 1 s each
|
||||
# Measurement: 8 iterations, 1 s each
|
||||
# Timeout: 10 min per iteration
|
||||
# Threads: 1 thread, will synchronize iterations
|
||||
# Benchmark mode: Average time, time/op
|
||||
# Benchmark: com.ankurm.jmhbasics.ForkingBenchmark.measure_1_c1
|
||||
|
||||
# Run progress: 0.00% complete, ETA 00:00:33
|
||||
# Fork: N/A, test runs in the host VM
|
||||
# *** WARNING: Non-forked runs may silently omit JVM options, mess up profilers, disable compiler hints, etc. ***
|
||||
# *** WARNING: Use non-forked runs only for debugging purposes, not for actual performance runs. ***
|
||||
# Warmup Iteration 1: 1.169 ns/op
|
||||
# Warmup Iteration 2: 0.972 ns/op
|
||||
# Warmup Iteration 3: 0.891 ns/op
|
||||
Iteration 1: 0.797 ns/op
|
||||
Iteration 2: 1.058 ns/op
|
||||
Iteration 3: 0.842 ns/op
|
||||
Iteration 4: 0.892 ns/op
|
||||
Iteration 5: 0.870 ns/op
|
||||
Iteration 6: 1.155 ns/op
|
||||
Iteration 7: 0.884 ns/op
|
||||
Iteration 8: 0.800 ns/op
|
||||
|
||||
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_1_c1":
|
||||
0.912 ±(99.9%) 0.244 ns/op [Average]
|
||||
(min, avg, max) = (0.797, 0.912, 1.155), stdev = 0.128
|
||||
CI (99.9%): [0.668, 1.156] (assumes normal distribution)
|
||||
|
||||
|
||||
# JMH version: 1.37
|
||||
# VM version: JDK 25.0.5, OpenJDK 64-Bit Server VM, 25.0.5+8-LTS
|
||||
# VM invoker: /tmp/tools/jdk-25.0.5+8/bin/java
|
||||
# Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable)
|
||||
# Warmup: 3 iterations, 1 s each
|
||||
# Measurement: 8 iterations, 1 s each
|
||||
# Timeout: 10 min per iteration
|
||||
# Threads: 1 thread, will synchronize iterations
|
||||
# Benchmark mode: Average time, time/op
|
||||
# Benchmark: com.ankurm.jmhbasics.ForkingBenchmark.measure_2_c2
|
||||
|
||||
# Run progress: 33.33% complete, ETA 00:00:22
|
||||
# Fork: N/A, test runs in the host VM
|
||||
# *** WARNING: Non-forked runs may silently omit JVM options, mess up profilers, disable compiler hints, etc. ***
|
||||
# *** WARNING: Use non-forked runs only for debugging purposes, not for actual performance runs. ***
|
||||
# Warmup Iteration 1: 1.287 ns/op
|
||||
# Warmup Iteration 2: 1.593 ns/op
|
||||
# Warmup Iteration 3: 2.833 ns/op
|
||||
Iteration 1: 3.000 ns/op
|
||||
Iteration 2: 2.695 ns/op
|
||||
Iteration 3: 2.754 ns/op
|
||||
Iteration 4: 2.416 ns/op
|
||||
Iteration 5: 2.173 ns/op
|
||||
Iteration 6: 2.287 ns/op
|
||||
Iteration 7: 2.217 ns/op
|
||||
Iteration 8: 2.100 ns/op
|
||||
|
||||
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_2_c2":
|
||||
2.455 ±(99.9%) 0.620 ns/op [Average]
|
||||
(min, avg, max) = (2.100, 2.455, 3.000), stdev = 0.324
|
||||
CI (99.9%): [1.835, 3.075] (assumes normal distribution)
|
||||
|
||||
|
||||
# JMH version: 1.37
|
||||
# VM version: JDK 25.0.5, OpenJDK 64-Bit Server VM, 25.0.5+8-LTS
|
||||
# VM invoker: /tmp/tools/jdk-25.0.5+8/bin/java
|
||||
# Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable)
|
||||
# Warmup: 3 iterations, 1 s each
|
||||
# Measurement: 8 iterations, 1 s each
|
||||
# Timeout: 10 min per iteration
|
||||
# Threads: 1 thread, will synchronize iterations
|
||||
# Benchmark mode: Average time, time/op
|
||||
# Benchmark: com.ankurm.jmhbasics.ForkingBenchmark.measure_3_c1
|
||||
|
||||
# Run progress: 66.67% complete, ETA 00:00:11
|
||||
# Fork: N/A, test runs in the host VM
|
||||
# *** WARNING: Non-forked runs may silently omit JVM options, mess up profilers, disable compiler hints, etc. ***
|
||||
# *** WARNING: Use non-forked runs only for debugging purposes, not for actual performance runs. ***
|
||||
# Warmup Iteration 1: 2.188 ns/op
|
||||
# Warmup Iteration 2: 2.224 ns/op
|
||||
# Warmup Iteration 3: 2.666 ns/op
|
||||
Iteration 1: 2.274 ns/op
|
||||
Iteration 2: 2.184 ns/op
|
||||
Iteration 3: 2.297 ns/op
|
||||
Iteration 4: 2.201 ns/op
|
||||
Iteration 5: 2.344 ns/op
|
||||
Iteration 6: 2.517 ns/op
|
||||
Iteration 7: 2.654 ns/op
|
||||
Iteration 8: 2.302 ns/op
|
||||
|
||||
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_3_c1":
|
||||
2.347 ±(99.9%) 0.307 ns/op [Average]
|
||||
(min, avg, max) = (2.184, 2.347, 2.654), stdev = 0.161
|
||||
CI (99.9%): [2.040, 2.654] (assumes normal distribution)
|
||||
|
||||
|
||||
# Run complete. Total time: 00:00:33
|
||||
|
||||
REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
|
||||
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
|
||||
experiments, perform baseline and negative tests that provide experimental control, make sure
|
||||
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
|
||||
Do not assume the numbers tell you what you want them to tell.
|
||||
|
||||
NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise
|
||||
extra caution when trusting the results, look into the generated code to check the benchmark still
|
||||
works, and factor in a small probability of new VM bugs. Additionally, while comparisons between
|
||||
different JVMs are already problematic, the performance difference caused by different Blackhole
|
||||
modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons.
|
||||
|
||||
Benchmark Mode Cnt Score Error Units
|
||||
ForkingBenchmark.measure_1_c1 avgt 8 0.912 ± 0.244 ns/op
|
||||
ForkingBenchmark.measure_2_c2 avgt 8 2.455 ± 0.620 ns/op
|
||||
ForkingBenchmark.measure_3_c1 avgt 8 2.347 ± 0.307 ns/op
|
||||
Reference in New Issue
Block a user