From 63ee566e1b880f5889e47620b3d7046f96a8a1c4 Mon Sep 17 00:00:00 2001 From: rafambn Date: Wed, 9 Sep 2026 01:43:37 -0300 Subject: [PATCH 1/2] Reduce hash collisions at compression levels 6 through 8 --- .../rafambn/kflate/algorithm/DeflateLevel.kt | 6 +- .../2026-09-09-table18timed/RESULTS.md | 79 ++++ .../2026-09-09-table18timed/RatioSweep.java | 39 ++ .../2026-09-09-table18timed/after-jmh.json | 380 ++++++++++++++++++ .../2026-09-09-table18timed/after-sizes.jsonl | 70 ++++ .../2026-09-09-table18timed/before-jmh.json | 380 ++++++++++++++++++ .../before-sizes.jsonl | 70 ++++ .../2026-09-09-table18timed/native_bench.py | 38 ++ 8 files changed, 1059 insertions(+), 3 deletions(-) create mode 100644 performance/2026-09-09-table18timed/RESULTS.md create mode 100644 performance/2026-09-09-table18timed/RatioSweep.java create mode 100644 performance/2026-09-09-table18timed/after-jmh.json create mode 100644 performance/2026-09-09-table18timed/after-sizes.jsonl create mode 100644 performance/2026-09-09-table18timed/before-jmh.json create mode 100644 performance/2026-09-09-table18timed/before-sizes.jsonl create mode 100644 performance/2026-09-09-table18timed/native_bench.py diff --git a/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/DeflateLevel.kt b/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/DeflateLevel.kt index 695f0f0..9a0911d 100644 --- a/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/DeflateLevel.kt +++ b/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/DeflateLevel.kt @@ -20,9 +20,9 @@ internal val DEFLATE_LEVELS = arrayOf( DeflateLevel(niceLength = 16, chainLength = 16, maxLazyLength = 0, maxHashBits = 13), DeflateLevel(niceLength = 16, chainLength = 32, maxLazyLength = 4, maxHashBits = 14), DeflateLevel(niceLength = 32, chainLength = 32, maxLazyLength = 16, maxHashBits = 14), - DeflateLevel(niceLength = 128, chainLength = 128, maxLazyLength = 16, maxHashBits = 15), - DeflateLevel(niceLength = 128, chainLength = 256, maxLazyLength = 32, maxHashBits = 15), - DeflateLevel(niceLength = 258, chainLength = 1_024, maxLazyLength = 128, maxHashBits = 16), + DeflateLevel(niceLength = 128, chainLength = 128, maxLazyLength = 16, maxHashBits = 18), + DeflateLevel(niceLength = 128, chainLength = 256, maxLazyLength = 32, maxHashBits = 18), + DeflateLevel(niceLength = 258, chainLength = 1_024, maxLazyLength = 128, maxHashBits = 18), DeflateLevel( niceLength = 258, chainLength = 4_096, diff --git a/performance/2026-09-09-table18timed/RESULTS.md b/performance/2026-09-09-table18timed/RESULTS.md new file mode 100644 index 0000000..1edc2b7 --- /dev/null +++ b/performance/2026-09-09-table18timed/RESULTS.md @@ -0,0 +1,79 @@ +# Reduce hash collisions at levels 6 through 8 + +Raise the hash-bit cap to 18 at levels 6 through 8. Large-input hash-head storage rises from 64 KiB at levels 6/7 and 128 KiB at level 8 to 512 KiB. This reduces compressed size but increases text compression time in the measured level 6 run. The 2 MiB variant saved only another 0.067 percentage points overall at level 6, so this change retains the smaller table. + +Base: `fe2ff51`, `dev-1.1.0`. Measured on September 9, 2026 on Linux x86_64, Intel Core i7-11800H. JVM uses JBR 17.0.14; Node uses 22.22.1. + +Only KFlate was timed. Kompress sizes and timings come unchanged from the trusted September 8 archive in `performance/history.json`. Benchmark setup may produce Kompress streams for decoder validation outside timing. + +## Compressed size + +The JVM sweep compresses all seven tracked corpora at every listed level. Every output must round-trip through both the JDK RAW inflater and KFlate. Byte counts are deterministic. Single-run durations in the sweep JSON are diagnostic, not throughput benchmarks. + +Output reduction is `(beforeBytes - afterBytes) / beforeBytes`. Totals weight each corpus by its compressed bytes; they are not averages of percentage changes. + +| Level | Before bytes | After bytes | Output reduction | +| ---: | ---: | ---: | ---: | +| 0 | 76,379,868 | 76,379,868 | 0.0000% | +| 1 | 40,222,941 | 40,222,941 | 0.0000% | +| 2 | 39,269,936 | 39,269,936 | 0.0000% | +| 3 | 38,906,551 | 38,906,551 | 0.0000% | +| 4 | 38,333,169 | 38,333,169 | 0.0000% | +| 5 | 38,293,272 | 38,293,272 | 0.0000% | +| 6 | 37,882,044 | 37,658,928 | 0.5890% | +| 7 | 37,868,330 | 37,645,390 | 0.5887% | +| 8 | 37,737,043 | 37,633,460 | 0.2745% | +| 9 | 37,251,418 | 37,251,418 | 0.0000% | + +### Level 6 + +| Corpus | Before bytes | After bytes | Reduction | Saved JVM Kompress bytes | +| --- | ---: | ---: | ---: | ---: | +| simpleText | 84 | 84 | 0.0000% | 84 | +| text | 506,455 | 505,467 | 0.1951% | 505,318 | +| model3D | 2,153 | 2,153 | 0.0000% | 2,149 | +| Rainier.bmp | 3,283,450 | 3,272,788 | 0.3247% | 3,275,337 | +| Maltese.bmp | 7,158,472 | 7,110,022 | 0.6768% | 7,096,685 | +| Sunrise.bmp | 26,838,825 | 26,676,269 | 0.6057% | 26,698,992 | +| compressed_MVT.pbf | 92,605 | 92,145 | 0.4967% | 91,408 | + +### Level 9 + +| Corpus | Before bytes | After bytes | Reduction | Saved JVM Kompress bytes | +| --- | ---: | ---: | ---: | ---: | +| simpleText | 84 | 84 | 0.0000% | 84 | +| text | 492,523 | 492,523 | 0.0000% | 503,400 | +| model3D | 2,153 | 2,153 | 0.0000% | 2,149 | +| Rainier.bmp | 3,258,570 | 3,258,570 | 0.0000% | 3,270,382 | +| Maltese.bmp | 7,034,092 | 7,034,092 | 0.0000% | 7,090,887 | +| Sunrise.bmp | 26,372,269 | 26,372,269 | 0.0000% | 26,652,810 | +| compressed_MVT.pbf | 91,727 | 91,727 | 0.0000% | 91,400 | + +## Compression timing + +Development measurements use three one-second warmups and five one-second measurement iterations. JVM has one fresh fork per corpus; Native has one process per corpus; Wasm uses one runner. These shorter runs detect broad tradeoffs and are not release-grade speed claims. Raw samples, errors and confidence intervals are retained. No decompression speed claim is made. + +### jvm, level 6 + +| Corpus | Before ms | After ms | Before/after speedup | Saved Kompress/after speedup | +| --- | ---: | ---: | ---: | ---: | +| simpleText | 0.0279 | 0.0263 | 1.059x | 0.162x | +| text | 60.4159 | 86.0590 | 0.702x | 0.605x | +| model3D | 0.0669 | 0.0637 | 1.050x | 0.474x | +| Rainier.bmp | 108.3289 | 124.8295 | 0.868x | 0.826x | +| Maltese.bmp | 477.9739 | 495.8255 | 0.964x | 0.762x | +| Sunrise.bmp | 1673.0244 | 1540.8887 | 1.086x | 0.803x | +| compressed_MVT.pbf | 4.5006 | 4.1359 | 1.088x | 0.944x | + + +## Validation and reproduction + +Linux JVM tests passed, including monotonic search-effort settings. All 70 corpus/level cases passed JDK and KFlate decompression. Levels 6 through 8 had no compressed-size regressions among the seven fixtures; other levels retained their settings. All seven level 6 JMH cases completed. Native and Wasm were not timed for this variant. + +Tracked source diff SHA-256: `003f65e2d3b4b5a0c7fcbcaf45ca2f4f23898039f74cf5f6e7a31a44ab616706`. Added source/test files are present in this commit. + +Linux build: `ANDROID_HOME=/home/rafael/Android/Sdk ./gradlew :kflate:jvmTest :kflate:jvmBenchmarkBenchmarkJar --no-parallel --max-workers=1`. + +For level 9 timing, set `BENCHMARK_COMPRESSION_LEVEL` to 9 in `BenchmarkState.kt` before building; leave it at 6 otherwise. Use JBR 17.0.14 and the generated JMH jar with the main and benchmark classes on its classpath. Run `org.openjdk.jmh.Main` with the relevant `CompressionBenchmarks` method filter and `-wi 3 -i 5 -w 1s -r 1s -f 1 -foe true -rf json -rff result.json`. Only KFlate benchmark methods should be selected. + +Compile `RatioSweep.java` against the KFlate classes and generated benchmark jar, then run it with `kflate/src/jvmTest/resources FIRST_LEVEL LAST_LEVEL`. It checks both JDK and KFlate decompression and records deterministic sizes and output hashes. diff --git a/performance/2026-09-09-table18timed/RatioSweep.java b/performance/2026-09-09-table18timed/RatioSweep.java new file mode 100644 index 0000000..2d3bf10 --- /dev/null +++ b/performance/2026-09-09-table18timed/RatioSweep.java @@ -0,0 +1,39 @@ +import com.rafambn.kflate.KFlate; +import com.rafambn.kflate.compression.Raw; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.security.MessageDigest; +import java.util.HexFormat; +import java.util.zip.Inflater; + +public class RatioSweep { + public static void main(String[] args) throws Exception { + String[] names = {"simpleText", "text", "model3D", "Rainier.bmp", "Maltese.bmp", "Sunrise.bmp", "compressed_MVT.pbf"}; + int first = args.length > 1 ? Integer.parseInt(args[1]) : 0; + int last = args.length > 2 ? Integer.parseInt(args[2]) : 9; + for (String name : names) { + byte[] input = Files.readAllBytes(Path.of(args[0], name)); + for (int level = first; level <= last; level++) { + long start = System.nanoTime(); + byte[] output = KFlate.INSTANCE.compress(input, new Raw(level, null)); + double ms = (System.nanoTime() - start) / 1e6; + Inflater inflater = new Inflater(true); + try { + inflater.setInput(output); + byte[] decoded = new byte[input.length + 1]; + int count = inflater.inflate(decoded); + if (!inflater.finished() || count != input.length || !Arrays.equals(input, Arrays.copyOf(decoded, count))) { + throw new AssertionError("Invalid output: " + name + " level " + level); + } + } finally { + inflater.end(); + } + if (!Arrays.equals(input, KFlate.INSTANCE.decompress(output, new com.rafambn.kflate.decompression.Raw(null, null)))) { + throw new AssertionError("KFlate round trip: " + name + " level " + level); + } + System.out.printf(java.util.Locale.ROOT, "{\"corpus\":\"%s\",\"level\":%d,\"originalSizeBytes\":%d,\"compressedSizeBytes\":%d,\"singleRunMs\":%.6f,\"sha256\":\"%s\"}%n", name, level, input.length, output.length, ms, HexFormat.of().formatHex(MessageDigest.getInstance("SHA-256").digest(output))); + } + } + } +} diff --git a/performance/2026-09-09-table18timed/after-jmh.json b/performance/2026-09-09-table18timed/after-jmh.json new file mode 100644 index 0000000..7d96275 --- /dev/null +++ b/performance/2026-09-09-table18timed/after-jmh.json @@ -0,0 +1,380 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "simpleText" + }, + "primaryMetric" : { + "score" : 2.6315873828065477E-5, + "scoreError" : 2.945604620668557E-6, + "scoreConfidence" : [ + 2.337026920739692E-5, + 2.9261478448734034E-5 + ], + "scorePercentiles" : { + "0.0" : 2.585921983505261E-5, + "50.0" : 2.5955925464548947E-5, + "90.0" : 2.765727340855041E-5, + "95.0" : 2.765727340855041E-5, + "99.0" : 2.765727340855041E-5, + "99.9" : 2.765727340855041E-5, + "99.99" : 2.765727340855041E-5, + "99.999" : 2.765727340855041E-5, + "99.9999" : 2.765727340855041E-5, + "100.0" : 2.765727340855041E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.765727340855041E-5, + 2.623448089080083E-5, + 2.5955925464548947E-5, + 2.585921983505261E-5, + 2.587246954137458E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "text" + }, + "primaryMetric" : { + "score" : 0.08605900193333334, + "scoreError" : 0.0022963453634428817, + "scoreConfidence" : [ + 0.08376265656989046, + 0.08835534729677622 + ], + "scorePercentiles" : { + "0.0" : 0.08539508066666666, + "50.0" : 0.08608315058333334, + "90.0" : 0.0869765785, + "95.0" : 0.0869765785, + "99.0" : 0.0869765785, + "99.9" : 0.0869765785, + "99.99" : 0.0869765785, + "99.999" : 0.0869765785, + "99.9999" : 0.0869765785, + "100.0" : 0.0869765785 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.08539508066666666, + 0.085695777, + 0.08608315058333334, + 0.0869765785, + 0.08614442291666667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "model3D" + }, + "primaryMetric" : { + "score" : 6.367144140868466E-5, + "scoreError" : 2.258243536563826E-6, + "scoreConfidence" : [ + 6.141319787212083E-5, + 6.59296849452485E-5 + ], + "scorePercentiles" : { + "0.0" : 6.314056887626262E-5, + "50.0" : 6.331705855542192E-5, + "90.0" : 6.432371210854607E-5, + "95.0" : 6.432371210854607E-5, + "99.0" : 6.432371210854607E-5, + "99.9" : 6.432371210854607E-5, + "99.99" : 6.432371210854607E-5, + "99.999" : 6.432371210854607E-5, + "99.9999" : 6.432371210854607E-5, + "100.0" : 6.432371210854607E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.432371210854607E-5, + 6.429573502185652E-5, + 6.328013248133621E-5, + 6.314056887626262E-5, + 6.331705855542192E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Rainier.bmp" + }, + "primaryMetric" : { + "score" : 0.12482947137222222, + "scoreError" : 0.011816989051292965, + "scoreConfidence" : [ + 0.11301248232092925, + 0.1366464604235152 + ], + "scorePercentiles" : { + "0.0" : 0.1195245121111111, + "50.0" : 0.125714860875, + "90.0" : 0.127455216, + "95.0" : 0.127455216, + "99.0" : 0.127455216, + "99.9" : 0.127455216, + "99.99" : 0.127455216, + "99.999" : 0.127455216, + "99.9999" : 0.127455216, + "100.0" : 0.127455216 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.1195245121111111, + 0.125379227625, + 0.12607354025, + 0.125714860875, + 0.127455216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Maltese.bmp" + }, + "primaryMetric" : { + "score" : 0.4958254651333334, + "scoreError" : 0.019982895844454972, + "scoreConfidence" : [ + 0.47584256928887847, + 0.5158083609777884 + ], + "scorePercentiles" : { + "0.0" : 0.48989089966666666, + "50.0" : 0.4952808653333333, + "90.0" : 0.504109657, + "95.0" : 0.504109657, + "99.0" : 0.504109657, + "99.9" : 0.504109657, + "99.99" : 0.504109657, + "99.999" : 0.504109657, + "99.9999" : 0.504109657, + "100.0" : 0.504109657 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.48989089966666666, + 0.493935312, + 0.504109657, + 0.4952808653333333, + 0.4959105916666667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Sunrise.bmp" + }, + "primaryMetric" : { + "score" : 1.5408887128, + "scoreError" : 0.12879774665888816, + "scoreConfidence" : [ + 1.4120909661411118, + 1.669686459458888 + ], + "scorePercentiles" : { + "0.0" : 1.505758104, + "50.0" : 1.537229533, + "90.0" : 1.594714479, + "95.0" : 1.594714479, + "99.0" : 1.594714479, + "99.9" : 1.594714479, + "99.99" : 1.594714479, + "99.999" : 1.594714479, + "99.9999" : 1.594714479, + "100.0" : 1.594714479 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 1.505758104, + 1.522945514, + 1.537229533, + 1.594714479, + 1.543795934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "compressed_MVT.pbf" + }, + "primaryMetric" : { + "score" : 0.004135873555782413, + "scoreError" : 6.076012550798543E-4, + "scoreConfidence" : [ + 0.003528272300702559, + 0.004743474810862267 + ], + "scorePercentiles" : { + "0.0" : 0.004001551184, + "50.0" : 0.004117130300411523, + "90.0" : 0.004392211407894737, + "95.0" : 0.004392211407894737, + "99.0" : 0.004392211407894737, + "99.9" : 0.004392211407894737, + "99.99" : 0.004392211407894737, + "99.999" : 0.004392211407894737, + "99.9999" : 0.004392211407894737, + "100.0" : 0.004392211407894737 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.004392211407894737, + 0.004155504294605809, + 0.004117130300411523, + 0.004001551184, + 0.004012970592 + ] + ] + }, + "secondaryMetrics" : { + } + } +] diff --git a/performance/2026-09-09-table18timed/after-sizes.jsonl b/performance/2026-09-09-table18timed/after-sizes.jsonl new file mode 100644 index 0000000..b1471cb --- /dev/null +++ b/performance/2026-09-09-table18timed/after-sizes.jsonl @@ -0,0 +1,70 @@ +{"corpus":"simpleText","level":0,"originalSizeBytes":100,"compressedSizeBytes":105,"singleRunMs":18.704067,"sha256":"7a4f86cab2c64d7a755ba6244b34b85122a3d7e629073b34930b3d477585100b"} +{"corpus":"simpleText","level":1,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":10.278954,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":2,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.309096,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":3,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.360086,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":4,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.271973,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":5,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.296383,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":6,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.229527,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":7,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.219720,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":8,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.219957,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":9,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.487510,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"text","level":0,"originalSizeBytes":1232923,"compressedSizeBytes":1233018,"singleRunMs":4.345148,"sha256":"cfab8f8c4f21f3b8b8b3cd60a85b7e1243a5aad2a06fa863e9eec73187488605"} +{"corpus":"text","level":1,"originalSizeBytes":1232923,"compressedSizeBytes":599813,"singleRunMs":53.434418,"sha256":"143d81705ac095d278fb6e1fa3932a500916369bc4596da6885cfe2e7d81f756"} +{"corpus":"text","level":2,"originalSizeBytes":1232923,"compressedSizeBytes":581519,"singleRunMs":36.433700,"sha256":"611557ab65d0c35387dfc6121636fd006ff3a237c3a838835f67e31cc79983ce"} +{"corpus":"text","level":3,"originalSizeBytes":1232923,"compressedSizeBytes":565252,"singleRunMs":37.652549,"sha256":"19a3c8ae4b1f0ed21ed27b0e0bb87c22d0ebf7259406f8d748c3d79c3d4888ee"} +{"corpus":"text","level":4,"originalSizeBytes":1232923,"compressedSizeBytes":531466,"singleRunMs":53.759845,"sha256":"d27df2bc4d16b3c9b193b68a7c72cc4208ed4505c2eaafbfc078fbfb29bdd3e1"} +{"corpus":"text","level":5,"originalSizeBytes":1232923,"compressedSizeBytes":521837,"singleRunMs":67.243487,"sha256":"49036c7d2710a45efdf31f3cb63b002ecffe3f8732566b65cd54997e02788bbd"} +{"corpus":"text","level":6,"originalSizeBytes":1232923,"compressedSizeBytes":505467,"singleRunMs":75.897277,"sha256":"654bf0ef1606192310610614a5acec678582c3acfb840ccef83fedd82d59fd5a"} +{"corpus":"text","level":7,"originalSizeBytes":1232923,"compressedSizeBytes":505125,"singleRunMs":68.761114,"sha256":"d22d5ecff67fb8d3070215c84f95d2144c513516118ff502ed54e463cfcef12b"} +{"corpus":"text","level":8,"originalSizeBytes":1232923,"compressedSizeBytes":505054,"singleRunMs":72.077596,"sha256":"03f5e50440a518245d8b89409dd7a539e076b31408fc58b170cd569bb5bb2550"} +{"corpus":"text","level":9,"originalSizeBytes":1232923,"compressedSizeBytes":492523,"singleRunMs":198.691706,"sha256":"dc70cee621bd4f3b0773d4001d396384e0eae4fe2eea0289bf3620b80d6670ca"} +{"corpus":"model3D","level":0,"originalSizeBytes":2478,"compressedSizeBytes":2483,"singleRunMs":0.025045,"sha256":"7d1354e385451c35f23c9be4ce28245d554943a2219ff0cf3481d5c0a02a4919"} +{"corpus":"model3D","level":1,"originalSizeBytes":2478,"compressedSizeBytes":2169,"singleRunMs":0.183771,"sha256":"cc762b082d3527b26e531d8f8cd04e17467595b5ef1ea32a541b275663e3ef96"} +{"corpus":"model3D","level":2,"originalSizeBytes":2478,"compressedSizeBytes":2168,"singleRunMs":0.152225,"sha256":"7be0094d5c194b33c4337a5c971d25c3ed4e2c3d1d195a75225130310d911733"} +{"corpus":"model3D","level":3,"originalSizeBytes":2478,"compressedSizeBytes":2166,"singleRunMs":0.122408,"sha256":"fa0c3d7374a90b6f9d7f14095e59ecd375b976cd57423d40e18d26332bf768c6"} +{"corpus":"model3D","level":4,"originalSizeBytes":2478,"compressedSizeBytes":2165,"singleRunMs":0.132869,"sha256":"b8bb6e5b0de2dac94d69e676871bd5538d16c6fc909b4a926a9fb42ca33d4846"} +{"corpus":"model3D","level":5,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.576897,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":6,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.194618,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":7,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.231551,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":8,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.280289,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":9,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.383503,"sha256":"450f6437d13a19585d0df05da961baf30023451a17612fd84a683a2f2f450ea7"} +{"corpus":"Rainier.bmp","level":0,"originalSizeBytes":6220854,"compressedSizeBytes":6221329,"singleRunMs":6.066774,"sha256":"acf3201e43c503d2705565195eb3bfc176e674b00bc8eeaf55411409398ffb7e"} +{"corpus":"Rainier.bmp","level":1,"originalSizeBytes":6220854,"compressedSizeBytes":3387685,"singleRunMs":97.287852,"sha256":"d86acee038a3272ef53f6be323c941d63ee7fc64544d489d3e81061ba2cb4296"} +{"corpus":"Rainier.bmp","level":2,"originalSizeBytes":6220854,"compressedSizeBytes":3357387,"singleRunMs":88.070723,"sha256":"cb08babeb442d0a7b5ef341c5114d36a9a40c0e9640c848accd37d151af8a3a6"} +{"corpus":"Rainier.bmp","level":3,"originalSizeBytes":6220854,"compressedSizeBytes":3345679,"singleRunMs":86.538750,"sha256":"3c62f22018cd809c25f3c70a9672872a0a0ec916ad89b7eca944c0415093b7dd"} +{"corpus":"Rainier.bmp","level":4,"originalSizeBytes":6220854,"compressedSizeBytes":3325593,"singleRunMs":88.701948,"sha256":"84cf1da1aa0fd2007e5de90ff81e779e616020cf3548affd456350296f12ce6c"} +{"corpus":"Rainier.bmp","level":5,"originalSizeBytes":6220854,"compressedSizeBytes":3313388,"singleRunMs":95.426455,"sha256":"54a7d786396e86dae90937df6dd8425d69557991ec611265a212ad85037e2b63"} +{"corpus":"Rainier.bmp","level":6,"originalSizeBytes":6220854,"compressedSizeBytes":3272788,"singleRunMs":110.589648,"sha256":"91d9ad49159ab5260708278dfb5b4d4549663656dc2c503e874c1c4b2741fdb8"} +{"corpus":"Rainier.bmp","level":7,"originalSizeBytes":6220854,"compressedSizeBytes":3271404,"singleRunMs":108.218219,"sha256":"c96858d15e3f5c4db8840ed9cc17e0aebcd81b7a5667c2d0844be1b3a9858f37"} +{"corpus":"Rainier.bmp","level":8,"originalSizeBytes":6220854,"compressedSizeBytes":3268544,"singleRunMs":120.596517,"sha256":"8eb2d23381942ebfae3c5f6bc02d90d317b8f5f3a5d3d9b67482e1d4e2aee9c4"} +{"corpus":"Rainier.bmp","level":9,"originalSizeBytes":6220854,"compressedSizeBytes":3258570,"singleRunMs":3526.289436,"sha256":"03c9fd76a372debf3b4ded8a5ac7f85a1cdf1f5fb0d263963eecbc52147fdace"} +{"corpus":"Maltese.bmp","level":0,"originalSizeBytes":16427390,"compressedSizeBytes":16428645,"singleRunMs":13.865758,"sha256":"d872a98f975735016f16578b716b5c874f98e85abc101426d1142dd3a5c096d6"} +{"corpus":"Maltese.bmp","level":1,"originalSizeBytes":16427390,"compressedSizeBytes":8344362,"singleRunMs":261.112417,"sha256":"fbb73b9022879442d4e1f1ecb02baa6b1ac77119aafde5151b559e0b417dd98c"} +{"corpus":"Maltese.bmp","level":2,"originalSizeBytes":16427390,"compressedSizeBytes":7762283,"singleRunMs":304.358799,"sha256":"382e0863aa03871829f20b35a7d9f69c29108bbfcca7dd1d0097f782be3f8a2b"} +{"corpus":"Maltese.bmp","level":3,"originalSizeBytes":16427390,"compressedSizeBytes":7494606,"singleRunMs":340.260449,"sha256":"387c7f415e7da413a670c5ec9589ef69e744bf442195d53f60996d04c2d661dc"} +{"corpus":"Maltese.bmp","level":4,"originalSizeBytes":16427390,"compressedSizeBytes":7272625,"singleRunMs":363.165865,"sha256":"799d4909f60c7fa4262539af0c182ecf99fae272ed6b031524cf86ff2cef7693"} +{"corpus":"Maltese.bmp","level":5,"originalSizeBytes":16427390,"compressedSizeBytes":7265831,"singleRunMs":461.765231,"sha256":"d62521d1d682ba1afa24845265fcb768883997c5425775d8630b2feaab128464"} +{"corpus":"Maltese.bmp","level":6,"originalSizeBytes":16427390,"compressedSizeBytes":7110022,"singleRunMs":475.241250,"sha256":"ef9bdcc38b9fc873a21816eeaf36456b4021cdf8d514f8c2f9dccc5257c4a6ce"} +{"corpus":"Maltese.bmp","level":7,"originalSizeBytes":16427390,"compressedSizeBytes":7109282,"singleRunMs":480.266590,"sha256":"8146cdba5a5d6f7278c5f1531296e51539e7bea9d121888ba6072a4a6a1b2b17"} +{"corpus":"Maltese.bmp","level":8,"originalSizeBytes":16427390,"compressedSizeBytes":7109225,"singleRunMs":480.913354,"sha256":"f8b371e851c79f62df780b2594e38c650e2acd0652d1d70e912f1302782a6c5e"} +{"corpus":"Maltese.bmp","level":9,"originalSizeBytes":16427390,"compressedSizeBytes":7034092,"singleRunMs":1355.874926,"sha256":"839db5fb3ea325162ced4ed8675e03aeac77e96099385c08d2c9d7140741d60e"} +{"corpus":"Sunrise.bmp","level":0,"originalSizeBytes":52344054,"compressedSizeBytes":52348049,"singleRunMs":32.930028,"sha256":"4ab78a3e1ba97388ff3dd5e00d9e134bceeb1b5eb3edc7aaf7845c1377fea548"} +{"corpus":"Sunrise.bmp","level":1,"originalSizeBytes":52344054,"compressedSizeBytes":27793016,"singleRunMs":915.560829,"sha256":"7028cd0b1e7d73172e76063b6004aedee371667bca442e8a68ca718f36dac355"} +{"corpus":"Sunrise.bmp","level":2,"originalSizeBytes":52344054,"compressedSizeBytes":27471887,"singleRunMs":1105.365168,"sha256":"38fe2dd9e078be3c88adf86d15cc2da3187ea4c8919a73284f431e68dd9b7392"} +{"corpus":"Sunrise.bmp","level":3,"originalSizeBytes":52344054,"compressedSizeBytes":27404419,"singleRunMs":1058.958588,"sha256":"158c5cb3eb8d7023dc234ec5ae5e4e0d64be93f8c0f2f250bf05da65d5c9aff3"} +{"corpus":"Sunrise.bmp","level":4,"originalSizeBytes":52344054,"compressedSizeBytes":27107867,"singleRunMs":1270.153692,"sha256":"c42c56683342f532ce402a90d066e23d688a19221200648c26ce3b11621cc2e0"} +{"corpus":"Sunrise.bmp","level":5,"originalSizeBytes":52344054,"compressedSizeBytes":27096750,"singleRunMs":1537.051307,"sha256":"734bc825d4f1374115b66c64e1f56edf46c8978185ddaecffd9adc87a2e4c12e"} +{"corpus":"Sunrise.bmp","level":6,"originalSizeBytes":52344054,"compressedSizeBytes":26676269,"singleRunMs":1706.977911,"sha256":"d40091db8fab0db5481759b14da4cd62d8c79867c42d7aeac320b752a5d86099"} +{"corpus":"Sunrise.bmp","level":7,"originalSizeBytes":52344054,"compressedSizeBytes":26665193,"singleRunMs":1955.027124,"sha256":"e0279a7c3e94edf820d73dd53a0030e8e8f23a8579b21d2a17902d91f9090934"} +{"corpus":"Sunrise.bmp","level":8,"originalSizeBytes":52344054,"compressedSizeBytes":26656250,"singleRunMs":2122.894092,"sha256":"a1fc0ae408240f6a08674e0fff2585939f6b70bd242b0dcab9b1ea4a8ef304cd"} +{"corpus":"Sunrise.bmp","level":9,"originalSizeBytes":52344054,"compressedSizeBytes":26372269,"singleRunMs":13912.796713,"sha256":"4a6c5eb215fe50a55a4a8c23aefa08c900d0282ef35611dbb9420055869fa986"} +{"corpus":"compressed_MVT.pbf","level":0,"originalSizeBytes":146224,"compressedSizeBytes":146239,"singleRunMs":0.054418,"sha256":"d8239f92d78f0d7fc3e9e9d8557e35365184e7d8c7f432339a8375c422a61c13"} +{"corpus":"compressed_MVT.pbf","level":1,"originalSizeBytes":146224,"compressedSizeBytes":95812,"singleRunMs":2.548309,"sha256":"8e921cc121ff9a262119bd7a2124a36039b95a26a5095349d08ea9b776c0ba34"} +{"corpus":"compressed_MVT.pbf","level":2,"originalSizeBytes":146224,"compressedSizeBytes":94608,"singleRunMs":2.913271,"sha256":"52efa74d70a15df6fa9d67da07da404b7e4628f895f65ddaa94148161762c45c"} +{"corpus":"compressed_MVT.pbf","level":3,"originalSizeBytes":146224,"compressedSizeBytes":94345,"singleRunMs":3.091077,"sha256":"a4090d9493e7e896ce6bc3f1c454e23738aa2e35e5418abb8d98c9f6dafaec94"} +{"corpus":"compressed_MVT.pbf","level":4,"originalSizeBytes":146224,"compressedSizeBytes":93369,"singleRunMs":3.236937,"sha256":"41844dbfb741b35e7e91c17ad039e1439e9601af58a3f70c6a83cac1e5f9491e"} +{"corpus":"compressed_MVT.pbf","level":5,"originalSizeBytes":146224,"compressedSizeBytes":93229,"singleRunMs":4.101456,"sha256":"169dee1b2849bae5fbfcdfd0daaece65729fe589980485d0b441c19050dd97b8"} +{"corpus":"compressed_MVT.pbf","level":6,"originalSizeBytes":146224,"compressedSizeBytes":92145,"singleRunMs":3.966608,"sha256":"6c75b5aed1f39b2e2c7169cde6672ab4f164ea271911129ed9911026414d089e"} +{"corpus":"compressed_MVT.pbf","level":7,"originalSizeBytes":146224,"compressedSizeBytes":92149,"singleRunMs":4.006664,"sha256":"ab19c0321d5c1599e761afb90b14f4ee49eebb4e314c5895874ca1a96eef27da"} +{"corpus":"compressed_MVT.pbf","level":8,"originalSizeBytes":146224,"compressedSizeBytes":92150,"singleRunMs":4.099582,"sha256":"dd38208188087a7eb6404c9d197efbfdd31000914b11de562023ebb91e59e96a"} +{"corpus":"compressed_MVT.pbf","level":9,"originalSizeBytes":146224,"compressedSizeBytes":91727,"singleRunMs":9.519688,"sha256":"60d5160deb2f35070d7c0e456dad3a8685eb65495c9e4a1d4372b8b105211c38"} diff --git a/performance/2026-09-09-table18timed/before-jmh.json b/performance/2026-09-09-table18timed/before-jmh.json new file mode 100644 index 0000000..7615387 --- /dev/null +++ b/performance/2026-09-09-table18timed/before-jmh.json @@ -0,0 +1,380 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "simpleText" + }, + "primaryMetric" : { + "score" : 2.7861177968744074E-5, + "scoreError" : 2.911922900505013E-6, + "scoreConfidence" : [ + 2.494925506823906E-5, + 3.077310086924909E-5 + ], + "scorePercentiles" : { + "0.0" : 2.6910095086907388E-5, + "50.0" : 2.7661463602168382E-5, + "90.0" : 2.881266400668357E-5, + "95.0" : 2.881266400668357E-5, + "99.0" : 2.881266400668357E-5, + "99.9" : 2.881266400668357E-5, + "99.99" : 2.881266400668357E-5, + "99.999" : 2.881266400668357E-5, + "99.9999" : 2.881266400668357E-5, + "100.0" : 2.881266400668357E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.7661463602168382E-5, + 2.881266400668357E-5, + 2.8417902909586862E-5, + 2.6910095086907388E-5, + 2.750376423837417E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "text" + }, + "primaryMetric" : { + "score" : 0.06041590843529412, + "scoreError" : 6.056857237638408E-4, + "scoreConfidence" : [ + 0.059810222711530275, + 0.06102159415905796 + ], + "scorePercentiles" : { + "0.0" : 0.06014622823529412, + "50.0" : 0.060454885588235294, + "90.0" : 0.060547520647058824, + "95.0" : 0.060547520647058824, + "99.0" : 0.060547520647058824, + "99.9" : 0.060547520647058824, + "99.99" : 0.060547520647058824, + "99.999" : 0.060547520647058824, + "99.9999" : 0.060547520647058824, + "100.0" : 0.060547520647058824 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.06014622823529412, + 0.060430179647058824, + 0.060454885588235294, + 0.060500728058823526, + 0.060547520647058824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "model3D" + }, + "primaryMetric" : { + "score" : 6.686024726012978E-5, + "scoreError" : 4.189482418431631E-6, + "scoreConfidence" : [ + 6.267076484169815E-5, + 7.10497296785614E-5 + ], + "scorePercentiles" : { + "0.0" : 6.499838984923317E-5, + "50.0" : 6.746798745277928E-5, + "90.0" : 6.757348270503986E-5, + "95.0" : 6.757348270503986E-5, + "99.0" : 6.757348270503986E-5, + "99.9" : 6.757348270503986E-5, + "99.99" : 6.757348270503986E-5, + "99.999" : 6.757348270503986E-5, + "99.9999" : 6.757348270503986E-5, + "100.0" : 6.757348270503986E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.757348270503986E-5, + 6.748003926595602E-5, + 6.746798745277928E-5, + 6.678133702764053E-5, + 6.499838984923317E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Rainier.bmp" + }, + "primaryMetric" : { + "score" : 0.10832889366000001, + "scoreError" : 0.0016506001920435149, + "scoreConfidence" : [ + 0.1066782934679565, + 0.10997949385204352 + ], + "scorePercentiles" : { + "0.0" : 0.1079189768, + "50.0" : 0.108242564, + "90.0" : 0.1090366517, + "95.0" : 0.1090366517, + "99.0" : 0.1090366517, + "99.9" : 0.1090366517, + "99.99" : 0.1090366517, + "99.999" : 0.1090366517, + "99.9999" : 0.1090366517, + "100.0" : 0.1090366517 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.1090366517, + 0.108242564, + 0.1079189768, + 0.1083576889, + 0.1080885869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Maltese.bmp" + }, + "primaryMetric" : { + "score" : 0.4779739153333333, + "scoreError" : 0.007987030924469857, + "scoreConfidence" : [ + 0.46998688440886344, + 0.4859609462578031 + ], + "scorePercentiles" : { + "0.0" : 0.476138847, + "50.0" : 0.477748715, + "90.0" : 0.481469577, + "95.0" : 0.481469577, + "99.0" : 0.481469577, + "99.9" : 0.481469577, + "99.99" : 0.481469577, + "99.999" : 0.481469577, + "99.9999" : 0.481469577, + "100.0" : 0.481469577 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.476735972, + 0.481469577, + 0.47777646566666665, + 0.477748715, + 0.476138847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "Sunrise.bmp" + }, + "primaryMetric" : { + "score" : 1.6730243644000002, + "scoreError" : 0.07340701551445698, + "scoreConfidence" : [ + 1.5996173488855432, + 1.7464313799144573 + ], + "scorePercentiles" : { + "0.0" : 1.644701101, + "50.0" : 1.67681155, + "90.0" : 1.697225124, + "95.0" : 1.697225124, + "99.0" : 1.697225124, + "99.9" : 1.697225124, + "99.99" : 1.697225124, + "99.999" : 1.697225124, + "99.9999" : 1.697225124, + "100.0" : 1.697225124 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 1.697225124, + 1.678261324, + 1.668122723, + 1.67681155, + 1.644701101 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.14", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.14+1-b1367.22", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "params" : { + "corpus" : "compressed_MVT.pbf" + }, + "primaryMetric" : { + "score" : 0.00450055958947036, + "scoreError" : 5.6866598483374845E-5, + "scoreConfidence" : [ + 0.004443692990986985, + 0.004557426187953735 + ], + "scorePercentiles" : { + "0.0" : 0.004483004799107143, + "50.0" : 0.004503572950672646, + "90.0" : 0.004517674288288288, + "95.0" : 0.004517674288288288, + "99.0" : 0.004517674288288288, + "99.9" : 0.004517674288288288, + "99.99" : 0.004517674288288288, + "99.999" : 0.004517674288288288, + "99.9999" : 0.004517674288288288, + "100.0" : 0.004517674288288288 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.004503572950672646, + 0.004487895139013453, + 0.004483004799107143, + 0.00451065077027027, + 0.004517674288288288 + ] + ] + }, + "secondaryMetrics" : { + } + } +] diff --git a/performance/2026-09-09-table18timed/before-sizes.jsonl b/performance/2026-09-09-table18timed/before-sizes.jsonl new file mode 100644 index 0000000..6b0a261 --- /dev/null +++ b/performance/2026-09-09-table18timed/before-sizes.jsonl @@ -0,0 +1,70 @@ +{"corpus":"simpleText","level":0,"originalSizeBytes":100,"compressedSizeBytes":105,"singleRunMs":18.721607} +{"corpus":"simpleText","level":1,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":10.375607} +{"corpus":"simpleText","level":2,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.346866} +{"corpus":"simpleText","level":3,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.426491} +{"corpus":"simpleText","level":4,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.288781} +{"corpus":"simpleText","level":5,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.294199} +{"corpus":"simpleText","level":6,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.256687} +{"corpus":"simpleText","level":7,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.217747} +{"corpus":"simpleText","level":8,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.213022} +{"corpus":"simpleText","level":9,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.510794} +{"corpus":"text","level":0,"originalSizeBytes":1232923,"compressedSizeBytes":1233018,"singleRunMs":4.634060} +{"corpus":"text","level":1,"originalSizeBytes":1232923,"compressedSizeBytes":599813,"singleRunMs":54.476717} +{"corpus":"text","level":2,"originalSizeBytes":1232923,"compressedSizeBytes":581519,"singleRunMs":33.454095} +{"corpus":"text","level":3,"originalSizeBytes":1232923,"compressedSizeBytes":565252,"singleRunMs":34.883134} +{"corpus":"text","level":4,"originalSizeBytes":1232923,"compressedSizeBytes":531466,"singleRunMs":59.907435} +{"corpus":"text","level":5,"originalSizeBytes":1232923,"compressedSizeBytes":521837,"singleRunMs":61.611316} +{"corpus":"text","level":6,"originalSizeBytes":1232923,"compressedSizeBytes":506455,"singleRunMs":76.163221} +{"corpus":"text","level":7,"originalSizeBytes":1232923,"compressedSizeBytes":506097,"singleRunMs":78.619466} +{"corpus":"text","level":8,"originalSizeBytes":1232923,"compressedSizeBytes":513489,"singleRunMs":83.872443} +{"corpus":"text","level":9,"originalSizeBytes":1232923,"compressedSizeBytes":492523,"singleRunMs":220.517381} +{"corpus":"model3D","level":0,"originalSizeBytes":2478,"compressedSizeBytes":2483,"singleRunMs":0.054391} +{"corpus":"model3D","level":1,"originalSizeBytes":2478,"compressedSizeBytes":2169,"singleRunMs":0.236631} +{"corpus":"model3D","level":2,"originalSizeBytes":2478,"compressedSizeBytes":2168,"singleRunMs":0.159924} +{"corpus":"model3D","level":3,"originalSizeBytes":2478,"compressedSizeBytes":2166,"singleRunMs":0.143489} +{"corpus":"model3D","level":4,"originalSizeBytes":2478,"compressedSizeBytes":2165,"singleRunMs":0.133548} +{"corpus":"model3D","level":5,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.726203} +{"corpus":"model3D","level":6,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.277670} +{"corpus":"model3D","level":7,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.243557} +{"corpus":"model3D","level":8,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.184029} +{"corpus":"model3D","level":9,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.404074} +{"corpus":"Rainier.bmp","level":0,"originalSizeBytes":6220854,"compressedSizeBytes":6221329,"singleRunMs":4.097972} +{"corpus":"Rainier.bmp","level":1,"originalSizeBytes":6220854,"compressedSizeBytes":3387685,"singleRunMs":127.041113} +{"corpus":"Rainier.bmp","level":2,"originalSizeBytes":6220854,"compressedSizeBytes":3357387,"singleRunMs":101.260474} +{"corpus":"Rainier.bmp","level":3,"originalSizeBytes":6220854,"compressedSizeBytes":3345679,"singleRunMs":106.363578} +{"corpus":"Rainier.bmp","level":4,"originalSizeBytes":6220854,"compressedSizeBytes":3325593,"singleRunMs":100.669595} +{"corpus":"Rainier.bmp","level":5,"originalSizeBytes":6220854,"compressedSizeBytes":3313388,"singleRunMs":105.538266} +{"corpus":"Rainier.bmp","level":6,"originalSizeBytes":6220854,"compressedSizeBytes":3283450,"singleRunMs":113.997284} +{"corpus":"Rainier.bmp","level":7,"originalSizeBytes":6220854,"compressedSizeBytes":3282047,"singleRunMs":120.376039} +{"corpus":"Rainier.bmp","level":8,"originalSizeBytes":6220854,"compressedSizeBytes":3274905,"singleRunMs":118.865381} +{"corpus":"Rainier.bmp","level":9,"originalSizeBytes":6220854,"compressedSizeBytes":3258570,"singleRunMs":3625.149389} +{"corpus":"Maltese.bmp","level":0,"originalSizeBytes":16427390,"compressedSizeBytes":16428645,"singleRunMs":6.704834} +{"corpus":"Maltese.bmp","level":1,"originalSizeBytes":16427390,"compressedSizeBytes":8344362,"singleRunMs":287.839174} +{"corpus":"Maltese.bmp","level":2,"originalSizeBytes":16427390,"compressedSizeBytes":7762283,"singleRunMs":334.470960} +{"corpus":"Maltese.bmp","level":3,"originalSizeBytes":16427390,"compressedSizeBytes":7494606,"singleRunMs":371.202987} +{"corpus":"Maltese.bmp","level":4,"originalSizeBytes":16427390,"compressedSizeBytes":7272625,"singleRunMs":395.378098} +{"corpus":"Maltese.bmp","level":5,"originalSizeBytes":16427390,"compressedSizeBytes":7265831,"singleRunMs":509.528066} +{"corpus":"Maltese.bmp","level":6,"originalSizeBytes":16427390,"compressedSizeBytes":7158472,"singleRunMs":523.034253} +{"corpus":"Maltese.bmp","level":7,"originalSizeBytes":16427390,"compressedSizeBytes":7157735,"singleRunMs":526.984351} +{"corpus":"Maltese.bmp","level":8,"originalSizeBytes":16427390,"compressedSizeBytes":7125327,"singleRunMs":524.641283} +{"corpus":"Maltese.bmp","level":9,"originalSizeBytes":16427390,"compressedSizeBytes":7034092,"singleRunMs":1436.734506} +{"corpus":"Sunrise.bmp","level":0,"originalSizeBytes":52344054,"compressedSizeBytes":52348049,"singleRunMs":31.612486} +{"corpus":"Sunrise.bmp","level":1,"originalSizeBytes":52344054,"compressedSizeBytes":27793016,"singleRunMs":887.391514} +{"corpus":"Sunrise.bmp","level":2,"originalSizeBytes":52344054,"compressedSizeBytes":27471887,"singleRunMs":1064.576845} +{"corpus":"Sunrise.bmp","level":3,"originalSizeBytes":52344054,"compressedSizeBytes":27404419,"singleRunMs":1166.086238} +{"corpus":"Sunrise.bmp","level":4,"originalSizeBytes":52344054,"compressedSizeBytes":27107867,"singleRunMs":1250.581032} +{"corpus":"Sunrise.bmp","level":5,"originalSizeBytes":52344054,"compressedSizeBytes":27096750,"singleRunMs":1511.964986} +{"corpus":"Sunrise.bmp","level":6,"originalSizeBytes":52344054,"compressedSizeBytes":26838825,"singleRunMs":1479.025315} +{"corpus":"Sunrise.bmp","level":7,"originalSizeBytes":52344054,"compressedSizeBytes":26827604,"singleRunMs":1687.182227} +{"corpus":"Sunrise.bmp","level":8,"originalSizeBytes":52344054,"compressedSizeBytes":26728454,"singleRunMs":1866.351752} +{"corpus":"Sunrise.bmp","level":9,"originalSizeBytes":52344054,"compressedSizeBytes":26372269,"singleRunMs":12143.996321} +{"corpus":"compressed_MVT.pbf","level":0,"originalSizeBytes":146224,"compressedSizeBytes":146239,"singleRunMs":0.056884} +{"corpus":"compressed_MVT.pbf","level":1,"originalSizeBytes":146224,"compressedSizeBytes":95812,"singleRunMs":2.498114} +{"corpus":"compressed_MVT.pbf","level":2,"originalSizeBytes":146224,"compressedSizeBytes":94608,"singleRunMs":2.921274} +{"corpus":"compressed_MVT.pbf","level":3,"originalSizeBytes":146224,"compressedSizeBytes":94345,"singleRunMs":3.426504} +{"corpus":"compressed_MVT.pbf","level":4,"originalSizeBytes":146224,"compressedSizeBytes":93369,"singleRunMs":3.443246} +{"corpus":"compressed_MVT.pbf","level":5,"originalSizeBytes":146224,"compressedSizeBytes":93229,"singleRunMs":3.893521} +{"corpus":"compressed_MVT.pbf","level":6,"originalSizeBytes":146224,"compressedSizeBytes":92605,"singleRunMs":4.154555} +{"corpus":"compressed_MVT.pbf","level":7,"originalSizeBytes":146224,"compressedSizeBytes":92610,"singleRunMs":4.015288} +{"corpus":"compressed_MVT.pbf","level":8,"originalSizeBytes":146224,"compressedSizeBytes":92631,"singleRunMs":4.439951} +{"corpus":"compressed_MVT.pbf","level":9,"originalSizeBytes":146224,"compressedSizeBytes":91727,"singleRunMs":8.610094} diff --git a/performance/2026-09-09-table18timed/native_bench.py b/performance/2026-09-09-table18timed/native_bench.py new file mode 100644 index 0000000..7a66ddc --- /dev/null +++ b/performance/2026-09-09-table18timed/native_bench.py @@ -0,0 +1,38 @@ +import json +from pathlib import Path +import subprocess +import sys + +binary = str(Path(sys.argv[1]).resolve()) +directory = Path(sys.argv[2]).resolve() +directory.mkdir(parents=True, exist_ok=True) +config = directory / 'runner.cfg' +config.write_text('\n'.join([ + 'name:ratio', f'reportFile:{directory}/benchmark.json', + 'traceFormat:text', 'reportFormat:json', + 'include:' + (sys.argv[5] if len(sys.argv) > 5 else '.*CompressionBenchmarks.rawDeflateCompression'), + f'warmups:{sys.argv[3] if len(sys.argv) > 3 else 3}', + f'iterations:{sys.argv[4] if len(sys.argv) > 4 else 5}', + 'iterationTime:1', 'iterationTimeUnit:sec', + 'outputTimeUnit:sec', 'mode:avgt', +])) + +def run(action, *args): + subprocess.run([binary, str(config), action, str(directory / 'trace.xml'), *map(str, args)], check=True) + +run('--list', directory) +configs = sorted(directory.glob('*.txt')) +expected = 14 if len(sys.argv) > 5 and 'Decompression' in sys.argv[5] else 7 +assert len(configs) == expected, configs +results = [] +for benchmark_config in configs: + samples = benchmark_config.with_suffix('.samples') + run('--benchmark', benchmark_config, samples) + values = samples.read_text().strip() + assert values and 'null' not in values + results.append(f'{benchmark_config}: {values}') +combined = directory / 'results' +combined.write_text('\n'.join(results)) +run('--store-results', combined) +rows = json.loads((directory / 'benchmark.json').read_text()) +assert len(rows) == expected From c51186a596ef48aaed36055f5796a90508553093 Mon Sep 17 00:00:00 2001 From: rafambn Date: Wed, 9 Sep 2026 02:08:28 -0300 Subject: [PATCH 2/2] Document text timing variability across fresh forks --- .../2026-09-09-table18timed/RESULTS.md | 4 + .../baseline-recheck-jmh.json | 200 ++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 performance/2026-09-09-table18timed/baseline-recheck-jmh.json diff --git a/performance/2026-09-09-table18timed/RESULTS.md b/performance/2026-09-09-table18timed/RESULTS.md index 1edc2b7..5674597 100644 --- a/performance/2026-09-09-table18timed/RESULTS.md +++ b/performance/2026-09-09-table18timed/RESULTS.md @@ -77,3 +77,7 @@ Linux build: `ANDROID_HOME=/home/rafael/Android/Sdk ./gradlew :kflate:jvmTest :k For level 9 timing, set `BENCHMARK_COMPRESSION_LEVEL` to 9 in `BenchmarkState.kt` before building; leave it at 6 otherwise. Use JBR 17.0.14 and the generated JMH jar with the main and benchmark classes on its classpath. Run `org.openjdk.jmh.Main` with the relevant `CompressionBenchmarks` method filter and `-wi 3 -i 5 -w 1s -r 1s -f 1 -foe true -rf json -rff result.json`. Only KFlate benchmark methods should be selected. Compile `RatioSweep.java` against the KFlate classes and generated benchmark jar, then run it with `kflate/src/jvmTest/resources FIRST_LEVEL LAST_LEVEL`. It checks both JDK and KFlate decompression and records deterministic sizes and output hashes. + +## Timing calibration + +A later three-fork unchanged-baseline run measured text at 60.37, 85.43, and 64.00 ms per fork. This spread means the initial single-fork text comparison cannot establish a causal speed change. The deterministic size results are unaffected. See `baseline-recheck-jmh.json` for all samples. diff --git a/performance/2026-09-09-table18timed/baseline-recheck-jmh.json b/performance/2026-09-09-table18timed/baseline-recheck-jmh.json new file mode 100644 index 0000000..198a588 --- /dev/null +++ b/performance/2026-09-09-table18timed/baseline-recheck-jmh.json @@ -0,0 +1,200 @@ +[ + { + "jmhVersion": "1.37", + "benchmark": "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs": [], + "jdkVersion": "17.0.14", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.14+1-b1367.22", + "warmupIterations": 3, + "warmupTime": "1 s", + "warmupBatchSize": 1, + "measurementIterations": 5, + "measurementTime": "1 s", + "measurementBatchSize": 1, + "params": { + "corpus": "simpleText" + }, + "primaryMetric": { + "score": 2.6968305442982996e-05, + "scoreError": 7.972825660060215e-07, + "scoreConfidence": [ + 2.6171022876976976e-05, + 2.7765588008989016e-05 + ], + "scorePercentiles": { + "0.0": 2.6064190561809466e-05, + "50.0": 2.713266691080729e-05, + "90.0": 2.8003960663271567e-05, + "95.0": 2.8266364931321012e-05, + "99.0": 2.8266364931321012e-05, + "99.9": 2.8266364931321012e-05, + "99.99": 2.8266364931321012e-05, + "99.999": 2.8266364931321012e-05, + "99.9999": 2.8266364931321012e-05, + "100.0": 2.8266364931321012e-05 + }, + "scoreUnit": "s/op", + "rawData": [ + [ + 2.7555488814194403e-05, + 2.8266364931321012e-05, + 2.7460792801449593e-05, + 2.6064190561809466e-05, + 2.608264600500678e-05 + ], + [ + 2.7647624087793012e-05, + 2.7570792910499186e-05, + 2.7829024484571936e-05, + 2.63618836056932e-05, + 2.6479099994705074e-05 + ], + [ + 2.7309787188728704e-05, + 2.713266691080729e-05, + 2.618046873445884e-05, + 2.6117664142666912e-05, + 2.6466086471039612e-05 + ] + ] + }, + "secondaryMetrics": {} + }, + { + "jmhVersion": "1.37", + "benchmark": "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs": [], + "jdkVersion": "17.0.14", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.14+1-b1367.22", + "warmupIterations": 3, + "warmupTime": "1 s", + "warmupBatchSize": 1, + "measurementIterations": 5, + "measurementTime": "1 s", + "measurementBatchSize": 1, + "params": { + "corpus": "text" + }, + "primaryMetric": { + "score": 0.06993304894514706, + "scoreError": 0.012428937382961722, + "scoreConfidence": [ + 0.05750411156218534, + 0.08236198632810877 + ], + "scorePercentiles": { + "0.0": 0.060155878882352944, + "50.0": 0.0634497960625, + "90.0": 0.08588725383333333, + "95.0": 0.08624586358333333, + "99.0": 0.08624586358333333, + "99.9": 0.08624586358333333, + "99.99": 0.08624586358333333, + "99.999": 0.08624586358333333, + "99.9999": 0.08624586358333333, + "100.0": 0.08624586358333333 + }, + "scoreUnit": "s/op", + "rawData": [ + [ + 0.060155878882352944, + 0.06047350752941177, + 0.06041102294117647, + 0.06046983752941176, + 0.060362842588235294 + ], + [ + 0.08493959983333334, + 0.08484457791666666, + 0.08564818066666667, + 0.08546072075, + 0.08624586358333333 + ], + [ + 0.06015902294117647, + 0.06055583835294118, + 0.0634497960625, + 0.06794135146666666, + 0.06787769313333333 + ] + ] + }, + "secondaryMetrics": {} + }, + { + "jmhVersion": "1.37", + "benchmark": "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateCompression", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/rafael/.jdks/jbr-17.0.14/bin/java", + "jvmArgs": [], + "jdkVersion": "17.0.14", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.14+1-b1367.22", + "warmupIterations": 3, + "warmupTime": "1 s", + "warmupBatchSize": 1, + "measurementIterations": 5, + "measurementTime": "1 s", + "measurementBatchSize": 1, + "params": { + "corpus": "model3D" + }, + "primaryMetric": { + "score": 6.769606591254372e-05, + "scoreError": 1.896985698416163e-06, + "scoreConfidence": [ + 6.579908021412755e-05, + 6.959305161095989e-05 + ], + "scorePercentiles": { + "0.0": 6.342663043753963e-05, + "50.0": 6.822538021828103e-05, + "90.0": 6.953005168173725e-05, + "95.0": 6.958730044531032e-05, + "99.0": 6.958730044531032e-05, + "99.9": 6.958730044531032e-05, + "99.99": 6.958730044531032e-05, + "99.999": 6.958730044531032e-05, + "99.9999": 6.958730044531032e-05, + "100.0": 6.958730044531032e-05 + }, + "scoreUnit": "s/op", + "rawData": [ + [ + 6.342663043753963e-05, + 6.413363150807899e-05, + 6.75012582669726e-05, + 6.743249794377402e-05, + 6.657319154742096e-05 + ], + [ + 6.958730044531032e-05, + 6.857982686505759e-05, + 6.836027286397813e-05, + 6.841834060747024e-05, + 6.800295553440304e-05 + ], + [ + 6.94918858393552e-05, + 6.832567481896433e-05, + 6.822538021828103e-05, + 6.918970121065376e-05, + 6.819244058089589e-05 + ] + ] + }, + "secondaryMetrics": {} + } +]