Files
asmhatreandClaude Sonnet 5.5 db129fb1ce 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
2026-11-08 18:31:11 +00:00

115 lines
4.4 KiB
Plaintext

# 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: 1 of 1
# Warmup Iteration 1: 0.752 ns/op
# Warmup Iteration 2: 0.687 ns/op
# Warmup Iteration 3: 0.725 ns/op
Iteration 1: 0.727 ns/op
Iteration 2: 0.793 ns/op
Iteration 3: 0.743 ns/op
Iteration 4: 0.716 ns/op
Iteration 5: 0.728 ns/op
Iteration 6: 0.800 ns/op
Iteration 7: 0.657 ns/op
Iteration 8: 0.658 ns/op
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_1_c1":
0.728 ±(99.9%) 0.101 ns/op [Average]
(min, avg, max) = (0.657, 0.728, 0.800), stdev = 0.053
CI (99.9%): [0.626, 0.829] (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: 1 of 1
# Warmup Iteration 1: 0.696 ns/op
# Warmup Iteration 2: 0.717 ns/op
# Warmup Iteration 3: 0.846 ns/op
Iteration 1: 0.863 ns/op
Iteration 2: 1.101 ns/op
Iteration 3: 0.780 ns/op
Iteration 4: 0.681 ns/op
Iteration 5: 0.735 ns/op
Iteration 6: 0.838 ns/op
Iteration 7: 0.683 ns/op
Iteration 8: 0.656 ns/op
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_2_c2":
0.792 ±(99.9%) 0.279 ns/op [Average]
(min, avg, max) = (0.656, 0.792, 1.101), stdev = 0.146
CI (99.9%): [0.513, 1.071] (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: 1 of 1
# Warmup Iteration 1: 0.713 ns/op
# Warmup Iteration 2: 0.713 ns/op
# Warmup Iteration 3: 0.640 ns/op
Iteration 1: 0.652 ns/op
Iteration 2: 0.655 ns/op
Iteration 3: 0.693 ns/op
Iteration 4: 0.835 ns/op
Iteration 5: 0.822 ns/op
Iteration 6: 0.739 ns/op
Iteration 7: 0.784 ns/op
Iteration 8: 0.686 ns/op
Result "com.ankurm.jmhbasics.ForkingBenchmark.measure_3_c1":
0.733 ±(99.9%) 0.140 ns/op [Average]
(min, avg, max) = (0.652, 0.733, 0.835), stdev = 0.073
CI (99.9%): [0.593, 0.873] (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.728 ± 0.101 ns/op
ForkingBenchmark.measure_2_c2 avgt 8 0.792 ± 0.279 ns/op
ForkingBenchmark.measure_3_c1 avgt 8 0.733 ± 0.140 ns/op