# JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.boxedLookup # Parameters: (size = 1024) # Run progress: 0.00% complete, ETA 00:01:30 # Fork: 1 of 2 # Warmup Iteration 1: 2.277 ns/op # Warmup Iteration 2: 2.187 ns/op Iteration 1: 2.180 ns/op gc.alloc.rate: 6999.499 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 46.000 counts gc.time: 17.000 ms Iteration 2: 2.150 ns/op gc.alloc.rate: 7095.205 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 47.000 counts gc.time: 15.000 ms Iteration 3: 2.059 ns/op gc.alloc.rate: 7410.493 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 49.000 counts gc.time: 14.000 ms # Run progress: 5.56% complete, ETA 00:01:30 # Fork: 2 of 2 # Warmup Iteration 1: 2.304 ns/op # Warmup Iteration 2: 2.376 ns/op Iteration 1: 2.240 ns/op gc.alloc.rate: 6811.981 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 44.000 counts gc.time: 16.000 ms Iteration 2: 2.234 ns/op gc.alloc.rate: 6829.368 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 46.000 counts gc.time: 14.000 ms Iteration 3: 2.252 ns/op gc.alloc.rate: 6775.573 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 45.000 counts gc.time: 24.000 ms Result "blog.libraries.LibraryBenchmarks.boxedLookup": 2.186 ±(99.9%) 0.206 ns/op [Average] (min, avg, max) = (2.059, 2.186, 2.252), stdev = 0.074 CI (99.9%): [1.980, 2.392] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.boxedLookup:gc.alloc.rate": 6987.020 ±(99.9%) 676.956 MB/sec [Average] (min, avg, max) = (6775.573, 6987.020, 7410.493), stdev = 241.409 CI (99.9%): [6310.064, 7663.976] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.boxedLookup:gc.alloc.rate.norm": 16.000 ±(99.9%) 0.001 B/op [Average] (min, avg, max) = (16.000, 16.000, 16.000), stdev = 0.001 CI (99.9%): [16.000, 16.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.boxedLookup:gc.count": 277.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (44.000, 46.167, 49.000), stdev = 1.722 CI (99.9%): [277.000, 277.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.boxedLookup:gc.time": 100.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (14.000, 16.667, 24.000), stdev = 3.777 CI (99.9%): [100.000, 100.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.caffeineHit # Parameters: (size = 1024) # Run progress: 11.11% complete, ETA 00:01:24 # Fork: 1 of 2 # Warmup Iteration 1: 14.829 ns/op # Warmup Iteration 2: 14.633 ns/op Iteration 1: 13.172 ns/op gc.alloc.rate: 1158.290 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 8.000 counts gc.time: 3.000 ms Iteration 2: 12.960 ns/op gc.alloc.rate: 1177.214 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 8.000 counts gc.time: 3.000 ms Iteration 3: 13.008 ns/op gc.alloc.rate: 1172.945 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 7.000 counts gc.time: 5.000 ms # Run progress: 16.67% complete, ETA 00:01:19 # Fork: 2 of 2 # Warmup Iteration 1: 13.744 ns/op # Warmup Iteration 2: 14.077 ns/op Iteration 1: 14.157 ns/op gc.alloc.rate: 1077.520 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 7.000 counts gc.time: 3.000 ms Iteration 2: 14.170 ns/op gc.alloc.rate: 1076.680 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 7.000 counts gc.time: 5.000 ms Iteration 3: 13.558 ns/op gc.alloc.rate: 1125.229 MB/sec gc.alloc.rate.norm: 16.000 B/op gc.count: 8.000 counts gc.time: 4.000 ms Result "blog.libraries.LibraryBenchmarks.caffeineHit": 13.504 ±(99.9%) 1.549 ns/op [Average] (min, avg, max) = (12.960, 13.504, 14.170), stdev = 0.552 CI (99.9%): [11.955, 15.053] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineHit:gc.alloc.rate": 1131.313 ±(99.9%) 128.402 MB/sec [Average] (min, avg, max) = (1076.680, 1131.313, 1177.214), stdev = 45.789 CI (99.9%): [1002.911, 1259.715] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineHit:gc.alloc.rate.norm": 16.000 ±(99.9%) 0.001 B/op [Average] (min, avg, max) = (16.000, 16.000, 16.000), stdev = 0.001 CI (99.9%): [16.000, 16.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineHit:gc.count": 45.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (7.000, 7.500, 8.000), stdev = 0.548 CI (99.9%): [45.000, 45.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineHit:gc.time": 23.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (3.000, 3.833, 5.000), stdev = 0.983 CI (99.9%): [23.000, 23.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.caffeineMiss # Parameters: (size = 1024) # Run progress: 22.22% complete, ETA 00:01:14 # Fork: 1 of 2 # Warmup Iteration 1: 125.542 ns/op # Warmup Iteration 2: 109.712 ns/op Iteration 1: 110.667 ns/op gc.alloc.rate: 2721.566 MB/sec gc.alloc.rate.norm: 315.861 B/op gc.count: 18.000 counts gc.time: 6.000 ms Iteration 2: 109.554 ns/op gc.alloc.rate: 2749.284 MB/sec gc.alloc.rate.norm: 315.864 B/op gc.count: 18.000 counts gc.time: 7.000 ms Iteration 3: 123.982 ns/op gc.alloc.rate: 2429.302 MB/sec gc.alloc.rate.norm: 315.875 B/op gc.count: 16.000 counts gc.time: 7.000 ms # Run progress: 27.78% complete, ETA 00:01:08 # Fork: 2 of 2 # Warmup Iteration 1: 145.430 ns/op # Warmup Iteration 2: 113.623 ns/op Iteration 1: 111.247 ns/op gc.alloc.rate: 2707.400 MB/sec gc.alloc.rate.norm: 315.861 B/op gc.count: 18.000 counts gc.time: 6.000 ms Iteration 2: 108.970 ns/op gc.alloc.rate: 2763.891 MB/sec gc.alloc.rate.norm: 315.864 B/op gc.count: 18.000 counts gc.time: 7.000 ms Iteration 3: 108.351 ns/op gc.alloc.rate: 2779.749 MB/sec gc.alloc.rate.norm: 315.869 B/op gc.count: 18.000 counts gc.time: 6.000 ms Result "blog.libraries.LibraryBenchmarks.caffeineMiss": 112.129 ±(99.9%) 16.556 ns/op [Average] (min, avg, max) = (108.351, 112.129, 123.982), stdev = 5.904 CI (99.9%): [95.572, 128.685] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineMiss:gc.alloc.rate": 2691.865 ±(99.9%) 368.345 MB/sec [Average] (min, avg, max) = (2429.302, 2691.865, 2779.749), stdev = 131.355 CI (99.9%): [2323.521, 3060.210] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineMiss:gc.alloc.rate.norm": 315.866 ±(99.9%) 0.015 B/op [Average] (min, avg, max) = (315.861, 315.866, 315.875), stdev = 0.005 CI (99.9%): [315.850, 315.881] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineMiss:gc.count": 106.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (16.000, 17.667, 18.000), stdev = 0.816 CI (99.9%): [106.000, 106.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.caffeineMiss:gc.time": 39.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (6.000, 6.500, 7.000), stdev = 0.548 CI (99.9%): [39.000, 39.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.eagerTransform # Parameters: (size = 1024) # Run progress: 33.33% complete, ETA 00:01:03 # Fork: 1 of 2 # Warmup Iteration 1: 3663.837 ns/op # Warmup Iteration 2: 3568.118 ns/op Iteration 1: 2589.239 ns/op gc.alloc.rate: 7556.450 MB/sec gc.alloc.rate.norm: 20520.018 B/op gc.count: 50.000 counts gc.time: 16.000 ms Iteration 2: 2601.141 ns/op gc.alloc.rate: 7522.221 MB/sec gc.alloc.rate.norm: 20520.018 B/op gc.count: 50.000 counts gc.time: 16.000 ms Iteration 3: 2684.522 ns/op gc.alloc.rate: 7288.061 MB/sec gc.alloc.rate.norm: 20520.018 B/op gc.count: 49.000 counts gc.time: 17.000 ms # Run progress: 38.89% complete, ETA 00:00:58 # Fork: 2 of 2 # Warmup Iteration 1: 3416.572 ns/op # Warmup Iteration 2: 3769.335 ns/op Iteration 1: 2784.493 ns/op gc.alloc.rate: 7026.223 MB/sec gc.alloc.rate.norm: 20520.019 B/op gc.count: 47.000 counts gc.time: 19.000 ms Iteration 2: 2667.261 ns/op gc.alloc.rate: 7335.546 MB/sec gc.alloc.rate.norm: 20520.018 B/op gc.count: 48.000 counts gc.time: 20.000 ms Iteration 3: 2742.142 ns/op gc.alloc.rate: 7135.565 MB/sec gc.alloc.rate.norm: 20520.019 B/op gc.count: 47.000 counts gc.time: 21.000 ms Result "blog.libraries.LibraryBenchmarks.eagerTransform": 2678.133 ±(99.9%) 215.023 ns/op [Average] (min, avg, max) = (2589.239, 2678.133, 2784.493), stdev = 76.679 CI (99.9%): [2463.110, 2893.156] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eagerTransform:gc.alloc.rate": 7310.678 ±(99.9%) 585.348 MB/sec [Average] (min, avg, max) = (7026.223, 7310.678, 7556.450), stdev = 208.741 CI (99.9%): [6725.330, 7896.026] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eagerTransform:gc.alloc.rate.norm": 20520.018 ±(99.9%) 0.001 B/op [Average] (min, avg, max) = (20520.018, 20520.018, 20520.019), stdev = 0.001 CI (99.9%): [20520.017, 20520.020] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eagerTransform:gc.count": 291.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (47.000, 48.500, 50.000), stdev = 1.378 CI (99.9%): [291.000, 291.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eagerTransform:gc.time": 109.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (16.000, 18.167, 21.000), stdev = 2.137 CI (99.9%): [109.000, 109.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.eclipseLookup # Parameters: (size = 1024) # Run progress: 44.44% complete, ETA 00:00:53 # Fork: 1 of 2 # Warmup Iteration 1: 1.339 ns/op # Warmup Iteration 2: 1.371 ns/op Iteration 1: 1.393 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 2: 1.318 ns/op gc.alloc.rate: 0.006 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 3: 1.332 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts # Run progress: 50.00% complete, ETA 00:00:47 # Fork: 2 of 2 # Warmup Iteration 1: 1.289 ns/op # Warmup Iteration 2: 1.298 ns/op Iteration 1: 1.263 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 2: 1.232 ns/op gc.alloc.rate: 0.006 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 3: 1.221 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Result "blog.libraries.LibraryBenchmarks.eclipseLookup": 1.293 ±(99.9%) 0.186 ns/op [Average] (min, avg, max) = (1.221, 1.293, 1.393), stdev = 0.066 CI (99.9%): [1.107, 1.479] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eclipseLookup:gc.alloc.rate": 0.007 ±(99.9%) 0.001 MB/sec [Average] (min, avg, max) = (0.006, 0.007, 0.007), stdev = 0.001 CI (99.9%): [0.006, 0.007] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.eclipseLookup:gc.alloc.rate.norm": ≈ 10⁻⁵ B/op Secondary result "blog.libraries.LibraryBenchmarks.eclipseLookup:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.fastutilLookup # Parameters: (size = 1024) # Run progress: 55.56% complete, ETA 00:00:42 # Fork: 1 of 2 # Warmup Iteration 1: 1.635 ns/op # Warmup Iteration 2: 1.493 ns/op Iteration 1: 1.516 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 2: 1.605 ns/op gc.alloc.rate: 0.006 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 3: 1.490 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts # Run progress: 61.11% complete, ETA 00:00:37 # Fork: 2 of 2 # Warmup Iteration 1: 1.535 ns/op # Warmup Iteration 2: 1.521 ns/op Iteration 1: 1.557 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 2: 1.494 ns/op gc.alloc.rate: 0.006 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Iteration 3: 1.476 ns/op gc.alloc.rate: 0.007 MB/sec gc.alloc.rate.norm: ≈ 10⁻⁵ B/op gc.count: ≈ 0 counts Result "blog.libraries.LibraryBenchmarks.fastutilLookup": 1.523 ±(99.9%) 0.139 ns/op [Average] (min, avg, max) = (1.476, 1.523, 1.605), stdev = 0.049 CI (99.9%): [1.384, 1.662] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.fastutilLookup:gc.alloc.rate": 0.007 ±(99.9%) 0.001 MB/sec [Average] (min, avg, max) = (0.006, 0.007, 0.007), stdev = 0.001 CI (99.9%): [0.006, 0.007] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.fastutilLookup:gc.alloc.rate.norm": ≈ 10⁻⁵ B/op Secondary result "blog.libraries.LibraryBenchmarks.fastutilLookup:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.guavaHit # Parameters: (size = 1024) # Run progress: 66.67% complete, ETA 00:00:31 # Fork: 1 of 2 # Warmup Iteration 1: 30.070 ns/op # Warmup Iteration 2: 25.370 ns/op Iteration 1: 28.164 ns/op gc.alloc.rate: 1354.259 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 9.000 counts gc.time: 4.000 ms Iteration 2: 27.917 ns/op gc.alloc.rate: 1366.132 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 9.000 counts gc.time: 5.000 ms Iteration 3: 29.951 ns/op gc.alloc.rate: 1273.435 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 8.000 counts gc.time: 18.000 ms # Run progress: 72.22% complete, ETA 00:00:26 # Fork: 2 of 2 # Warmup Iteration 1: 29.542 ns/op # Warmup Iteration 2: 28.464 ns/op Iteration 1: 26.232 ns/op gc.alloc.rate: 1453.882 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 10.000 counts gc.time: 21.000 ms Iteration 2: 26.132 ns/op gc.alloc.rate: 1459.283 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 9.000 counts gc.time: 8.000 ms Iteration 3: 27.383 ns/op gc.alloc.rate: 1392.752 MB/sec gc.alloc.rate.norm: 40.000 B/op gc.count: 9.000 counts gc.time: 7.000 ms Result "blog.libraries.LibraryBenchmarks.guavaHit": 27.630 ±(99.9%) 3.969 ns/op [Average] (min, avg, max) = (26.132, 27.630, 29.951), stdev = 1.415 CI (99.9%): [23.661, 31.598] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaHit:gc.alloc.rate": 1383.290 ±(99.9%) 194.494 MB/sec [Average] (min, avg, max) = (1273.435, 1383.290, 1459.283), stdev = 69.358 CI (99.9%): [1188.797, 1577.784] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaHit:gc.alloc.rate.norm": 40.000 ±(99.9%) 0.001 B/op [Average] (min, avg, max) = (40.000, 40.000, 40.000), stdev = 0.001 CI (99.9%): [40.000, 40.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaHit:gc.count": 54.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (8.000, 9.000, 10.000), stdev = 0.632 CI (99.9%): [54.000, 54.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaHit:gc.time": 63.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (4.000, 10.500, 21.000), stdev = 7.176 CI (99.9%): [63.000, 63.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.guavaMiss # Parameters: (size = 1024) # Run progress: 77.78% complete, ETA 00:00:21 # Fork: 1 of 2 # Warmup Iteration 1: 181.395 ns/op # Warmup Iteration 2: 164.258 ns/op Iteration 1: 160.130 ns/op gc.alloc.rate: 1212.967 MB/sec gc.alloc.rate.norm: 203.710 B/op gc.count: 8.000 counts gc.time: 4.000 ms Iteration 2: 174.246 ns/op gc.alloc.rate: 1113.979 MB/sec gc.alloc.rate.norm: 203.710 B/op gc.count: 7.000 counts gc.time: 7.000 ms Iteration 3: 152.280 ns/op gc.alloc.rate: 1273.962 MB/sec gc.alloc.rate.norm: 203.722 B/op gc.count: 9.000 counts gc.time: 14.000 ms # Run progress: 83.33% complete, ETA 00:00:15 # Fork: 2 of 2 # Warmup Iteration 1: 186.498 ns/op # Warmup Iteration 2: 151.519 ns/op Iteration 1: 151.285 ns/op gc.alloc.rate: 1283.831 MB/sec gc.alloc.rate.norm: 203.707 B/op gc.count: 8.000 counts gc.time: 24.000 ms Iteration 2: 139.654 ns/op gc.alloc.rate: 1390.896 MB/sec gc.alloc.rate.norm: 203.717 B/op gc.count: 10.000 counts gc.time: 4.000 ms Iteration 3: 139.866 ns/op gc.alloc.rate: 1388.815 MB/sec gc.alloc.rate.norm: 203.714 B/op gc.count: 9.000 counts gc.time: 4.000 ms Result "blog.libraries.LibraryBenchmarks.guavaMiss": 152.910 ±(99.9%) 36.696 ns/op [Average] (min, avg, max) = (139.654, 152.910, 174.246), stdev = 13.086 CI (99.9%): [116.214, 189.606] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaMiss:gc.alloc.rate": 1277.408 ±(99.9%) 297.312 MB/sec [Average] (min, avg, max) = (1113.979, 1277.408, 1390.896), stdev = 106.024 CI (99.9%): [980.096, 1574.721] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaMiss:gc.alloc.rate.norm": 203.713 ±(99.9%) 0.016 B/op [Average] (min, avg, max) = (203.707, 203.713, 203.722), stdev = 0.006 CI (99.9%): [203.698, 203.729] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaMiss:gc.count": 51.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (7.000, 8.500, 10.000), stdev = 1.049 CI (99.9%): [51.000, 51.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.guavaMiss:gc.time": 57.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (4.000, 9.500, 24.000), stdev = 8.093 CI (99.9%): [57.000, 57.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 21.0.11, OpenJDK 64-Bit Server VM, 21.0.11+10-LTS # VM invoker: /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java # VM options: -Xms256m -Xmx256m # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 1 s each # Measurement: 3 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize # Parameters: (size = 1024) # Run progress: 88.89% complete, ETA 00:00:10 # Fork: 1 of 2 # Warmup Iteration 1: 3761.183 ns/op # Warmup Iteration 2: 3320.599 ns/op Iteration 1: 4263.724 ns/op gc.alloc.rate: 5514.008 MB/sec gc.alloc.rate.norm: 24664.029 B/op gc.count: 36.000 counts gc.time: 13.000 ms Iteration 2: 4291.892 ns/op gc.alloc.rate: 5478.990 MB/sec gc.alloc.rate.norm: 24664.030 B/op gc.count: 37.000 counts gc.time: 12.000 ms Iteration 3: 4113.499 ns/op gc.alloc.rate: 5717.408 MB/sec gc.alloc.rate.norm: 24664.028 B/op gc.count: 38.000 counts gc.time: 13.000 ms # Run progress: 94.44% complete, ETA 00:00:05 # Fork: 2 of 2 # Warmup Iteration 1: 3319.380 ns/op # Warmup Iteration 2: 3175.296 ns/op Iteration 1: 4259.408 ns/op gc.alloc.rate: 5521.469 MB/sec gc.alloc.rate.norm: 24664.029 B/op gc.count: 37.000 counts gc.time: 13.000 ms Iteration 2: 4171.755 ns/op gc.alloc.rate: 5637.092 MB/sec gc.alloc.rate.norm: 24664.029 B/op gc.count: 38.000 counts gc.time: 13.000 ms Iteration 3: 4307.781 ns/op gc.alloc.rate: 5459.409 MB/sec gc.alloc.rate.norm: 24664.030 B/op gc.count: 36.000 counts gc.time: 12.000 ms Result "blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize": 4234.677 ±(99.9%) 212.513 ns/op [Average] (min, avg, max) = (4113.499, 4234.677, 4307.781), stdev = 75.784 CI (99.9%): [4022.164, 4447.190] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize:gc.alloc.rate": 5554.729 ±(99.9%) 282.750 MB/sec [Average] (min, avg, max) = (5459.409, 5554.729, 5717.408), stdev = 100.831 CI (99.9%): [5271.979, 5837.479] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize:gc.alloc.rate.norm": 24664.029 ±(99.9%) 0.002 B/op [Average] (min, avg, max) = (24664.028, 24664.029, 24664.030), stdev = 0.001 CI (99.9%): [24664.028, 24664.031] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize:gc.count": 222.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (36.000, 37.000, 38.000), stdev = 0.894 CI (99.9%): [222.000, 222.000] (assumes normal distribution) Secondary result "blog.libraries.LibraryBenchmarks.lazyTransformThenMaterialize:gc.time": 76.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (12.000, 12.667, 13.000), stdev = 0.516 CI (99.9%): [76.000, 76.000] (assumes normal distribution) # Run complete. Total time: 00:01:35 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 (size) Mode Cnt Score Error Units LibraryBenchmarks.boxedLookup 1024 avgt 6 2.186 ± 0.206 ns/op LibraryBenchmarks.boxedLookup:gc.alloc.rate 1024 avgt 6 6987.020 ± 676.956 MB/sec LibraryBenchmarks.boxedLookup:gc.alloc.rate.norm 1024 avgt 6 16.000 ± 0.001 B/op LibraryBenchmarks.boxedLookup:gc.count 1024 avgt 6 277.000 counts LibraryBenchmarks.boxedLookup:gc.time 1024 avgt 6 100.000 ms LibraryBenchmarks.caffeineHit 1024 avgt 6 13.504 ± 1.549 ns/op LibraryBenchmarks.caffeineHit:gc.alloc.rate 1024 avgt 6 1131.313 ± 128.402 MB/sec LibraryBenchmarks.caffeineHit:gc.alloc.rate.norm 1024 avgt 6 16.000 ± 0.001 B/op LibraryBenchmarks.caffeineHit:gc.count 1024 avgt 6 45.000 counts LibraryBenchmarks.caffeineHit:gc.time 1024 avgt 6 23.000 ms LibraryBenchmarks.caffeineMiss 1024 avgt 6 112.129 ± 16.556 ns/op LibraryBenchmarks.caffeineMiss:gc.alloc.rate 1024 avgt 6 2691.865 ± 368.345 MB/sec LibraryBenchmarks.caffeineMiss:gc.alloc.rate.norm 1024 avgt 6 315.866 ± 0.015 B/op LibraryBenchmarks.caffeineMiss:gc.count 1024 avgt 6 106.000 counts LibraryBenchmarks.caffeineMiss:gc.time 1024 avgt 6 39.000 ms LibraryBenchmarks.eagerTransform 1024 avgt 6 2678.133 ± 215.023 ns/op LibraryBenchmarks.eagerTransform:gc.alloc.rate 1024 avgt 6 7310.678 ± 585.348 MB/sec LibraryBenchmarks.eagerTransform:gc.alloc.rate.norm 1024 avgt 6 20520.018 ± 0.001 B/op LibraryBenchmarks.eagerTransform:gc.count 1024 avgt 6 291.000 counts LibraryBenchmarks.eagerTransform:gc.time 1024 avgt 6 109.000 ms LibraryBenchmarks.eclipseLookup 1024 avgt 6 1.293 ± 0.186 ns/op LibraryBenchmarks.eclipseLookup:gc.alloc.rate 1024 avgt 6 0.007 ± 0.001 MB/sec LibraryBenchmarks.eclipseLookup:gc.alloc.rate.norm 1024 avgt 6 ≈ 10⁻⁵ B/op LibraryBenchmarks.eclipseLookup:gc.count 1024 avgt 6 ≈ 0 counts LibraryBenchmarks.fastutilLookup 1024 avgt 6 1.523 ± 0.139 ns/op LibraryBenchmarks.fastutilLookup:gc.alloc.rate 1024 avgt 6 0.007 ± 0.001 MB/sec LibraryBenchmarks.fastutilLookup:gc.alloc.rate.norm 1024 avgt 6 ≈ 10⁻⁵ B/op LibraryBenchmarks.fastutilLookup:gc.count 1024 avgt 6 ≈ 0 counts LibraryBenchmarks.guavaHit 1024 avgt 6 27.630 ± 3.969 ns/op LibraryBenchmarks.guavaHit:gc.alloc.rate 1024 avgt 6 1383.290 ± 194.494 MB/sec LibraryBenchmarks.guavaHit:gc.alloc.rate.norm 1024 avgt 6 40.000 ± 0.001 B/op LibraryBenchmarks.guavaHit:gc.count 1024 avgt 6 54.000 counts LibraryBenchmarks.guavaHit:gc.time 1024 avgt 6 63.000 ms LibraryBenchmarks.guavaMiss 1024 avgt 6 152.910 ± 36.696 ns/op LibraryBenchmarks.guavaMiss:gc.alloc.rate 1024 avgt 6 1277.408 ± 297.312 MB/sec LibraryBenchmarks.guavaMiss:gc.alloc.rate.norm 1024 avgt 6 203.713 ± 0.016 B/op LibraryBenchmarks.guavaMiss:gc.count 1024 avgt 6 51.000 counts LibraryBenchmarks.guavaMiss:gc.time 1024 avgt 6 57.000 ms LibraryBenchmarks.lazyTransformThenMaterialize 1024 avgt 6 4234.677 ± 212.513 ns/op LibraryBenchmarks.lazyTransformThenMaterialize:gc.alloc.rate 1024 avgt 6 5554.729 ± 282.750 MB/sec LibraryBenchmarks.lazyTransformThenMaterialize:gc.alloc.rate.norm 1024 avgt 6 24664.029 ± 0.002 B/op LibraryBenchmarks.lazyTransformThenMaterialize:gc.count 1024 avgt 6 222.000 counts LibraryBenchmarks.lazyTransformThenMaterialize:gc.time 1024 avgt 6 76.000 ms Benchmark result is saved to evidence/36/jmh-result.json