Created
February 16, 2022 01:37
-
-
Save eiennohito/a8ab478bb3ea9200aa37eb545c3bdd3a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
➜ jmh java -jar jmh.jar ".*DoubleArray.*" -prof=gc | |
# JMH version: 1.34 | |
# VM version: JDK 17-testing, OpenJDK 64-Bit Server VM, 17-testing+0-builds.shipilev.net-openjdk-jdk17-b12-20210925 | |
# VM invoker: /home/arseny/work/tools/jdk/jdk-17/bin/java | |
# VM options: <none> | |
# Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) | |
# Warmup: 3 iterations, 5 s each | |
# Measurement: 7 iterations, 5 s each | |
# Timeout: 10 min per iteration | |
# Threads: 1 thread, will synchronize iterations | |
# Benchmark mode: Throughput, ops/time | |
# Benchmark: com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieNewImpl | |
# Run progress: 0.00% complete, ETA 00:01:40 | |
# Fork: 1 of 1 | |
# Warmup Iteration 1: 1981.648 ops/ms | |
# Warmup Iteration 2: 2184.834 ops/ms | |
# Warmup Iteration 3: 2192.194 ops/ms | |
Iteration 1: 2191.951 ops/ms | |
·gc.alloc.rate: 0.188 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 2: 2176.545 ops/ms | |
·gc.alloc.rate: 0.187 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 3: 2178.307 ops/ms | |
·gc.alloc.rate: 0.187 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 4: 2175.337 ops/ms | |
·gc.alloc.rate: 0.187 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 5: 2189.535 ops/ms | |
·gc.alloc.rate: 0.188 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 6: 2185.085 ops/ms | |
·gc.alloc.rate: 0.187 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Iteration 7: 2178.987 ops/ms | |
·gc.alloc.rate: 0.187 MB/sec | |
·gc.alloc.rate.norm: 0.120 B/op | |
·gc.count: ≈ 0 counts | |
Result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieNewImpl": | |
2182.249 ±(99.9%) 14.876 ops/ms [Average] | |
(min, avg, max) = (2175.337, 2182.249, 2191.951), stdev = 6.605 | |
CI (99.9%): [2167.374, 2197.125] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieNewImpl:·gc.alloc.rate": | |
0.187 ±(99.9%) 0.001 MB/sec [Average] | |
(min, avg, max) = (0.187, 0.187, 0.188), stdev = 0.001 | |
CI (99.9%): [0.186, 0.188] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieNewImpl:·gc.alloc.rate.norm": | |
0.120 ±(99.9%) 0.001 B/op [Average] | |
(min, avg, max) = (0.120, 0.120, 0.120), stdev = 0.001 | |
CI (99.9%): [0.120, 0.120] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieNewImpl:·gc.count": | |
≈ 0 counts | |
# JMH version: 1.34 | |
# VM version: JDK 17-testing, OpenJDK 64-Bit Server VM, 17-testing+0-builds.shipilev.net-openjdk-jdk17-b12-20210925 | |
# VM invoker: /home/arseny/work/tools/jdk/jdk-17/bin/java | |
# VM options: <none> | |
# Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) | |
# Warmup: 3 iterations, 5 s each | |
# Measurement: 7 iterations, 5 s each | |
# Timeout: 10 min per iteration | |
# Threads: 1 thread, will synchronize iterations | |
# Benchmark mode: Throughput, ops/time | |
# Benchmark: com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl | |
# Run progress: 50.00% complete, ETA 00:00:56 | |
# Fork: 1 of 1 | |
# Warmup Iteration 1: 2019.116 ops/ms | |
# Warmup Iteration 2: 2122.883 ops/ms | |
# Warmup Iteration 3: 2106.296 ops/ms | |
Iteration 1: 2124.961 ops/ms | |
·gc.alloc.rate: 135.688 MB/sec | |
·gc.alloc.rate.norm: 88.808 B/op | |
·gc.churn.G1_Eden_Space: 105.425 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 69.001 B/op | |
·gc.count: 2.000 counts | |
·gc.time: 15.000 ms | |
Iteration 2: 2093.892 ops/ms | |
·gc.alloc.rate: 133.548 MB/sec | |
·gc.alloc.rate.norm: 88.836 B/op | |
·gc.churn.G1_Eden_Space: 158.125 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 105.184 B/op | |
·gc.churn.G1_Survivor_Space: 0.136 MB/sec | |
·gc.churn.G1_Survivor_Space.norm: 0.090 B/op | |
·gc.count: 3.000 counts | |
·gc.time: 24.000 ms | |
Iteration 3: 2116.276 ops/ms | |
·gc.alloc.rate: 134.902 MB/sec | |
·gc.alloc.rate.norm: 88.802 B/op | |
·gc.churn.G1_Eden_Space: 159.565 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 105.037 B/op | |
·gc.churn.G1_Survivor_Space: 1.906 MB/sec | |
·gc.churn.G1_Survivor_Space.norm: 1.255 B/op | |
·gc.count: 3.000 counts | |
·gc.time: 19.000 ms | |
Iteration 4: 2127.603 ops/ms | |
·gc.alloc.rate: 135.080 MB/sec | |
·gc.alloc.rate.norm: 88.814 B/op | |
·gc.churn.G1_Eden_Space: 109.060 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 71.706 B/op | |
·gc.churn.G1_Survivor_Space: 0.075 MB/sec | |
·gc.churn.G1_Survivor_Space.norm: 0.049 B/op | |
·gc.count: 2.000 counts | |
·gc.time: 2.000 ms | |
Iteration 5: 2111.101 ops/ms | |
·gc.alloc.rate: 134.130 MB/sec | |
·gc.alloc.rate.norm: 88.819 B/op | |
·gc.churn.G1_Eden_Space: 109.044 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 72.208 B/op | |
·gc.churn.G1_Survivor_Space: 0.011 MB/sec | |
·gc.churn.G1_Survivor_Space.norm: 0.007 B/op | |
·gc.count: 2.000 counts | |
·gc.time: 2.000 ms | |
Iteration 6: 2104.638 ops/ms | |
·gc.alloc.rate: 133.759 MB/sec | |
·gc.alloc.rate.norm: 88.817 B/op | |
·gc.churn.G1_Eden_Space: 163.588 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 108.623 B/op | |
·gc.churn.G1_Survivor_Space: ≈ 10⁻⁴ MB/sec | |
·gc.churn.G1_Survivor_Space.norm: ≈ 10⁻⁴ B/op | |
·gc.count: 3.000 counts | |
·gc.time: 3.000 ms | |
Iteration 7: 2120.177 ops/ms | |
·gc.alloc.rate: 134.696 MB/sec | |
·gc.alloc.rate.norm: 88.814 B/op | |
·gc.churn.G1_Eden_Space: 109.060 MB/sec | |
·gc.churn.G1_Eden_Space.norm: 71.911 B/op | |
·gc.churn.G1_Survivor_Space: 0.001 MB/sec | |
·gc.churn.G1_Survivor_Space.norm: 0.001 B/op | |
·gc.count: 2.000 counts | |
·gc.time: 2.000 ms | |
Result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl": | |
2114.092 ±(99.9%) 26.789 ops/ms [Average] | |
(min, avg, max) = (2093.892, 2114.092, 2127.603), stdev = 11.894 | |
CI (99.9%): [2087.304, 2140.881] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.alloc.rate": | |
134.543 ±(99.9%) 1.727 MB/sec [Average] | |
(min, avg, max) = (133.548, 134.543, 135.688), stdev = 0.767 | |
CI (99.9%): [132.816, 136.270] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.alloc.rate.norm": | |
88.816 ±(99.9%) 0.024 B/op [Average] | |
(min, avg, max) = (88.802, 88.816, 88.836), stdev = 0.011 | |
CI (99.9%): [88.792, 88.839] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Eden_Space": | |
130.552 ±(99.9%) 63.111 MB/sec [Average] | |
(min, avg, max) = (105.425, 130.552, 163.588), stdev = 28.022 | |
CI (99.9%): [67.442, 193.663] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Eden_Space.norm": | |
86.238 ±(99.9%) 42.374 B/op [Average] | |
(min, avg, max) = (69.001, 86.238, 108.623), stdev = 18.814 | |
CI (99.9%): [43.864, 128.613] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Survivor_Space": | |
0.304 ±(99.9%) 1.595 MB/sec [Average] | |
(min, avg, max) = (≈ 0, 0.304, 1.906), stdev = 0.708 | |
CI (99.9%): [≈ 0, 1.899] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Survivor_Space.norm": | |
0.200 ±(99.9%) 1.050 B/op [Average] | |
(min, avg, max) = (≈ 0, 0.200, 1.255), stdev = 0.466 | |
CI (99.9%): [≈ 0, 1.250] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.count": | |
17.000 ±(99.9%) 0.001 counts [Sum] | |
(min, avg, max) = (2.000, 2.429, 3.000), stdev = 0.535 | |
CI (99.9%): [17.000, 17.000] (assumes normal distribution) | |
Secondary result "com.worksap.nlp.sudachi.dictionary.DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.time": | |
67.000 ±(99.9%) 0.001 ms [Sum] | |
(min, avg, max) = (2.000, 9.571, 24.000), stdev = 9.502 | |
CI (99.9%): [67.000, 67.000] (assumes normal distribution) | |
# Run complete. Total time: 00:01:53 | |
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 | |
DoubleArrayLookupBench.traverseTrieNewImpl thrpt 7 2182.249 ± 14.876 ops/ms | |
DoubleArrayLookupBench.traverseTrieNewImpl:·gc.alloc.rate thrpt 7 0.187 ± 0.001 MB/sec | |
DoubleArrayLookupBench.traverseTrieNewImpl:·gc.alloc.rate.norm thrpt 7 0.120 ± 0.001 B/op | |
DoubleArrayLookupBench.traverseTrieNewImpl:·gc.count thrpt 7 ≈ 0 counts | |
DoubleArrayLookupBench.traverseTrieOriginalImpl thrpt 7 2114.092 ± 26.789 ops/ms | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.alloc.rate thrpt 7 134.543 ± 1.727 MB/sec | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.alloc.rate.norm thrpt 7 88.816 ± 0.024 B/op | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Eden_Space thrpt 7 130.552 ± 63.111 MB/sec | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Eden_Space.norm thrpt 7 86.238 ± 42.374 B/op | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Survivor_Space thrpt 7 0.304 ± 1.595 MB/sec | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.churn.G1_Survivor_Space.norm thrpt 7 0.200 ± 1.050 B/op | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.count thrpt 7 17.000 counts | |
DoubleArrayLookupBench.traverseTrieOriginalImpl:·gc.time thrpt 7 67.000 ms |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment