From 4c78b0277fcde9cb8cbfa69d1178f436b8f55d43 Mon Sep 17 00:00:00 2001 From: rafambn Date: Wed, 9 Sep 2026 02:05:51 -0300 Subject: [PATCH] Expand inflate matches with bulk copies --- .../kflate/algorithm/FlateAlgorithms.kt | 48 +- kflate/src/jvmTest/kotlin/MatchCopyTest.kt | 47 ++ performance/2026-09-09-copy/RESULTS.md | 48 ++ performance/2026-09-09-copy/RatioSweep.java | 39 + performance/2026-09-09-copy/after-jmh.json | 758 ++++++++++++++++++ performance/2026-09-09-copy/after-sizes.jsonl | 7 + performance/2026-09-09-copy/before-jmh.json | 758 ++++++++++++++++++ .../2026-09-09-copy/before-sizes.jsonl | 70 ++ 8 files changed, 1772 insertions(+), 3 deletions(-) create mode 100644 kflate/src/jvmTest/kotlin/MatchCopyTest.kt create mode 100644 performance/2026-09-09-copy/RESULTS.md create mode 100644 performance/2026-09-09-copy/RatioSweep.java create mode 100644 performance/2026-09-09-copy/after-jmh.json create mode 100644 performance/2026-09-09-copy/after-sizes.jsonl create mode 100644 performance/2026-09-09-copy/before-jmh.json create mode 100644 performance/2026-09-09-copy/before-sizes.jsonl diff --git a/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/FlateAlgorithms.kt b/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/FlateAlgorithms.kt index d37b6dc..499edac 100644 --- a/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/FlateAlgorithms.kt +++ b/kflate/src/commonMain/kotlin/com/rafambn/kflate/algorithm/FlateAlgorithms.kt @@ -401,9 +401,10 @@ internal fun inflate( bytesWrittenToOutput = dictionaryEndIndex } - while (bytesWrittenToOutput < copyEndIndex) { - buffer[bytesWrittenToOutput] = buffer[bytesWrittenToOutput - matchDistance] - bytesWrittenToOutput++ + val remainingMatchLength = copyEndIndex - bytesWrittenToOutput + if (remainingMatchLength > 0) { + copyMatch(buffer, bytesWrittenToOutput, matchDistance, remainingMatchLength) + bytesWrittenToOutput = copyEndIndex } lastBitPosition = currentBitPosition } @@ -427,6 +428,47 @@ internal fun inflate( return workingBuffer.copyOfRange(0, bytesWrittenToOutput) } +internal fun copyMatch( + buffer: ByteArray, + destinationOffset: Int, + distance: Int, + length: Int, +) { + if (distance == 1) { + buffer.fill(buffer[destinationOffset - 1], destinationOffset, destinationOffset + length) + return + } + + if (distance >= length) { + buffer.copyInto( + destination = buffer, + destinationOffset = destinationOffset, + startIndex = destinationOffset - distance, + endIndex = destinationOffset - distance + length, + ) + return + } + + buffer.copyInto( + destination = buffer, + destinationOffset = destinationOffset, + startIndex = destinationOffset - distance, + endIndex = destinationOffset, + ) + + var copied = distance + while (copied < length) { + val copyLength = minOf(copied, length - copied) + buffer.copyInto( + destination = buffer, + destinationOffset = destinationOffset + copied, + startIndex = destinationOffset, + endIndex = destinationOffset + copyLength, + ) + copied += copyLength + } +} + internal fun deflate( data: ByteArray, level: Int, diff --git a/kflate/src/jvmTest/kotlin/MatchCopyTest.kt b/kflate/src/jvmTest/kotlin/MatchCopyTest.kt new file mode 100644 index 0000000..1f421e9 --- /dev/null +++ b/kflate/src/jvmTest/kotlin/MatchCopyTest.kt @@ -0,0 +1,47 @@ +package com.rafambn.kflate.algorithm + +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class MatchCopyTest { + + @Test + fun copiesNonOverlappingMatchInOneBulkOperation() { + val buffer = ByteArray(16) + buffer[0] = 1 + buffer[1] = 2 + buffer[2] = 3 + buffer[3] = 4 + buffer[4] = 5 + + copyMatch(buffer, destinationOffset = 8, distance = 8, length = 5) + + assertContentEquals(byteArrayOf(1, 2, 3, 4, 5), buffer.copyOfRange(8, 13)) + assertContentEquals(byteArrayOf(0, 0, 0), buffer.copyOfRange(13, 16)) + } + + @Test + fun expandsOverlappingMatchWithoutReadingUnwrittenBytes() { + val buffer = ByteArray(16) + buffer[0] = 1 + buffer[1] = 2 + buffer[2] = 3 + + copyMatch(buffer, destinationOffset = 3, distance = 3, length = 13) + + assertContentEquals( + byteArrayOf(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1), + buffer, + ) + } + + @Test + fun fillsSingleByteBackReferenceAcrossOverlap() { + val buffer = ByteArray(12) + buffer[0] = 7 + + copyMatch(buffer, destinationOffset = 1, distance = 1, length = 11) + + assertContentEquals(ByteArray(12) { 7 }, buffer) + } +} diff --git a/performance/2026-09-09-copy/RESULTS.md b/performance/2026-09-09-copy/RESULTS.md new file mode 100644 index 0000000..e1eaba2 --- /dev/null +++ b/performance/2026-09-09-copy/RESULTS.md @@ -0,0 +1,48 @@ +# Copy inflate matches with bulk array operations + +Use a fill for distance-one matches, a single copy for non-overlapping matches, and expanding copies for overlapping matches. Dictionary handling and output-limit checks remain at the call site. Compression output is unchanged. + +Base `fe2ff51` on `dev-1.1.0`. Measured September 9, 2026 on Linux x86_64, Intel Core i7-11800H. JVM uses JBR 17.0.14. + +Only KFlate was timed. Saved Kompress timings are accepted unchanged from `performance/history.json`. The Kompress comparison uses only Kompress-produced streams, matching the archived benchmark inputs. + +Three one-second warmups, five one-second measurements, one fork per JVM case. These short development measurements expose broad tradeoffs; they are not release-grade speed claims. Raw samples and errors are included. + +## jvm, rawDeflateDecompressionFromKFlate + +| Corpus | Before ms | After ms | Before/after speedup | Saved Kompress/after speedup | +| --- | ---: | ---: | ---: | ---: | +| simpleText | 0.0029 | 0.0028 | 1.036x | Different input stream | +| text | 7.2320 | 6.0596 | 1.193x | Different input stream | +| model3D | 0.0203 | 0.0201 | 1.011x | Different input stream | +| Rainier.bmp | 37.2355 | 34.7857 | 1.070x | Different input stream | +| Maltese.bmp | 91.8651 | 82.6290 | 1.112x | Different input stream | +| Sunrise.bmp | 363.8703 | 370.5068 | 0.982x | Different input stream | +| compressed_MVT.pbf | 1.0398 | 0.9554 | 1.088x | Different input stream | + +## jvm, rawDeflateDecompressionFromKompress + +| Corpus | Before ms | After ms | Before/after speedup | Saved Kompress/after speedup | +| --- | ---: | ---: | ---: | ---: | +| simpleText | 0.0029 | 0.0028 | 1.036x | 0.292x | +| text | 7.1466 | 5.7811 | 1.236x | 0.879x | +| model3D | 0.0241 | 0.0222 | 1.082x | 0.387x | +| Rainier.bmp | 36.4853 | 31.8823 | 1.144x | 0.527x | +| Maltese.bmp | 97.7610 | 78.1425 | 1.251x | 0.738x | +| Sunrise.bmp | 375.8864 | 338.8647 | 1.109x | 0.597x | +| compressed_MVT.pbf | 1.0341 | 1.0448 | 0.990x | 0.640x | + + +## Validation and reproduction + +All 180 Linux JVM tests passed, covering dictionaries, streaming, output limits and overlap semantics. All seven level 6 fixtures passed JDK and KFlate round trips. All 14 decoder JMH cases completed. Native and Wasm were not timed for this candidate. + +Tracked source diff SHA-256: `7fd5f9a4495062d50ebb25ee8b5b276cab5859703da6e13a464685b697a6f5c1`. 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. + +`./gradlew :kflate:koverVerifyJvm` passed on Linux with 100% instruction and branch coverage. diff --git a/performance/2026-09-09-copy/RatioSweep.java b/performance/2026-09-09-copy/RatioSweep.java new file mode 100644 index 0000000..2d3bf10 --- /dev/null +++ b/performance/2026-09-09-copy/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-copy/after-jmh.json b/performance/2026-09-09-copy/after-jmh.json new file mode 100644 index 0000000..2c31510 --- /dev/null +++ b/performance/2026-09-09-copy/after-jmh.json @@ -0,0 +1,758 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.83131694007782E-6, + "scoreError" : 1.9063662743768293E-7, + "scoreConfidence" : [ + 2.640680312640137E-6, + 3.021953567515503E-6 + ], + "scorePercentiles" : { + "0.0" : 2.8001286773659854E-6, + "50.0" : 2.8146906938260904E-6, + "90.0" : 2.919135722332806E-6, + "95.0" : 2.919135722332806E-6, + "99.0" : 2.919135722332806E-6, + "99.9" : 2.919135722332806E-6, + "99.99" : 2.919135722332806E-6, + "99.999" : 2.919135722332806E-6, + "99.9999" : 2.919135722332806E-6, + "100.0" : 2.919135722332806E-6 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.815930579643227E-6, + 2.8146906938260904E-6, + 2.8001286773659854E-6, + 2.806699027220992E-6, + 2.919135722332806E-6 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.006059603123054831, + "scoreError" : 2.6948113314724883E-4, + "scoreConfidence" : [ + 0.005790121989907583, + 0.00632908425620208 + ], + "scorePercentiles" : { + "0.0" : 0.0059546048154761905, + "50.0" : 0.006093869066666667, + "90.0" : 0.006120230487804878, + "95.0" : 0.006120230487804878, + "99.0" : 0.006120230487804878, + "99.9" : 0.006120230487804878, + "99.99" : 0.006120230487804878, + "99.999" : 0.006120230487804878, + "99.9999" : 0.006120230487804878, + "100.0" : 0.006120230487804878 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.0059546048154761905, + 0.006021846922155689, + 0.0061074643231707314, + 0.006120230487804878, + 0.006093869066666667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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" : 2.0128850845806084E-5, + "scoreError" : 1.0951051652848068E-7, + "scoreConfidence" : [ + 2.0019340329277603E-5, + 2.0238361362334565E-5 + ], + "scorePercentiles" : { + "0.0" : 2.0100165568104176E-5, + "50.0" : 2.0122013861505654E-5, + "90.0" : 2.017491425286429E-5, + "95.0" : 2.017491425286429E-5, + "99.0" : 2.017491425286429E-5, + "99.9" : 2.017491425286429E-5, + "99.99" : 2.017491425286429E-5, + "99.999" : 2.017491425286429E-5, + "99.9999" : 2.017491425286429E-5, + "100.0" : 2.017491425286429E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.017491425286429E-5, + 2.0133281906755777E-5, + 2.0100165568104176E-5, + 2.0122013861505654E-5, + 2.0113878639800516E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.03478572921507389, + "scoreError" : 0.004343603911944314, + "scoreConfidence" : [ + 0.030442125303129577, + 0.039129333127018204 + ], + "scorePercentiles" : { + "0.0" : 0.03386607886666667, + "50.0" : 0.034354869366666665, + "90.0" : 0.03670578928571429, + "95.0" : 0.03670578928571429, + "99.0" : 0.03670578928571429, + "99.9" : 0.03670578928571429, + "99.99" : 0.03670578928571429, + "99.999" : 0.03670578928571429, + "99.9999" : 0.03670578928571429, + "100.0" : 0.03670578928571429 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.03482460268965517, + 0.034354869366666665, + 0.03670578928571429, + 0.03386607886666667, + 0.03417730586666667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.08262901182179486, + "scoreError" : 0.00689829382190546, + "scoreConfidence" : [ + 0.0757307179998894, + 0.08952730564370032 + ], + "scorePercentiles" : { + "0.0" : 0.08102706284615385, + "50.0" : 0.08180049307692308, + "90.0" : 0.08509557441666667, + "95.0" : 0.08509557441666667, + "99.0" : 0.08509557441666667, + "99.9" : 0.08509557441666667, + "99.99" : 0.08509557441666667, + "99.999" : 0.08509557441666667, + "99.9999" : 0.08509557441666667, + "100.0" : 0.08509557441666667 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.08102706284615385, + 0.08393386292307692, + 0.08509557441666667, + 0.08180049307692308, + 0.08128806584615385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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" : 0.3705068246, + "scoreError" : 0.0017867126551619906, + "scoreConfidence" : [ + 0.368720111944838, + 0.372293537255162 + ], + "scorePercentiles" : { + "0.0" : 0.36995923766666666, + "50.0" : 0.370747384, + "90.0" : 0.37094320333333336, + "95.0" : 0.37094320333333336, + "99.0" : 0.37094320333333336, + "99.9" : 0.37094320333333336, + "99.99" : 0.37094320333333336, + "99.999" : 0.37094320333333336, + "99.9999" : 0.37094320333333336, + "100.0" : 0.37094320333333336 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.37083245966666667, + 0.3700518383333333, + 0.37094320333333336, + 0.36995923766666666, + 0.370747384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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" : 9.553621797970559E-4, + "scoreError" : 1.615956911540298E-5, + "scoreConfidence" : [ + 9.392026106816529E-4, + 9.715217489124589E-4 + ], + "scorePercentiles" : { + "0.0" : 9.514680323193916E-4, + "50.0" : 9.542049618684462E-4, + "90.0" : 9.625356788461538E-4, + "95.0" : 9.625356788461538E-4, + "99.0" : 9.625356788461538E-4, + "99.9" : 9.625356788461538E-4, + "99.99" : 9.625356788461538E-4, + "99.999" : 9.625356788461538E-4, + "99.9999" : 9.625356788461538E-4, + "100.0" : 9.625356788461538E-4 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 9.625356788461538E-4, + 9.542049618684462E-4, + 9.546410229007633E-4, + 9.539612030505243E-4, + 9.514680323193916E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.8178647946114415E-6, + "scoreError" : 2.2454750582003893E-8, + "scoreConfidence" : [ + 2.7954100440294377E-6, + 2.840319545193445E-6 + ], + "scorePercentiles" : { + "0.0" : 2.8098367868660874E-6, + "50.0" : 2.817757918074027E-6, + "90.0" : 2.826242497365142E-6, + "95.0" : 2.826242497365142E-6, + "99.0" : 2.826242497365142E-6, + "99.9" : 2.826242497365142E-6, + "99.99" : 2.826242497365142E-6, + "99.999" : 2.826242497365142E-6, + "99.9999" : 2.826242497365142E-6, + "100.0" : 2.826242497365142E-6 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.826242497365142E-6, + 2.818563893797329E-6, + 2.8169228769546214E-6, + 2.8098367868660874E-6, + 2.817757918074027E-6 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.0057810502968649435, + "scoreError" : 7.474812672808976E-4, + "scoreConfidence" : [ + 0.005033569029584046, + 0.006528531564145841 + ], + "scorePercentiles" : { + "0.0" : 0.005569014327777778, + "50.0" : 0.0058762721578947364, + "90.0" : 0.005954396041420118, + "95.0" : 0.005954396041420118, + "99.0" : 0.005954396041420118, + "99.9" : 0.005954396041420118, + "99.99" : 0.005954396041420118, + "99.999" : 0.005954396041420118, + "99.9999" : 0.005954396041420118, + "100.0" : 0.005954396041420118 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.005933138118343196, + 0.005569014327777778, + 0.005954396041420118, + 0.0058762721578947364, + 0.005572430838888889 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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" : 2.2242974587365195E-5, + "scoreError" : 9.456413133954988E-7, + "scoreConfidence" : [ + 2.1297333273969697E-5, + 2.3188615900760692E-5 + ], + "scorePercentiles" : { + "0.0" : 2.1908940003942785E-5, + "50.0" : 2.2386551430106084E-5, + "90.0" : 2.2434930393234483E-5, + "95.0" : 2.2434930393234483E-5, + "99.0" : 2.2434930393234483E-5, + "99.9" : 2.2434930393234483E-5, + "99.99" : 2.2434930393234483E-5, + "99.999" : 2.2434930393234483E-5, + "99.9999" : 2.2434930393234483E-5, + "100.0" : 2.2434930393234483E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.205222993650234E-5, + 2.2434930393234483E-5, + 2.2386551430106084E-5, + 2.2432221173040262E-5, + 2.1908940003942785E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.0318823268875, + "scoreError" : 7.409436194355615E-4, + "scoreConfidence" : [ + 0.031141383268064437, + 0.03262327050693556 + ], + "scorePercentiles" : { + "0.0" : 0.03175653221875, + "50.0" : 0.0318101265625, + "90.0" : 0.0322237378125, + "95.0" : 0.0322237378125, + "99.0" : 0.0322237378125, + "99.9" : 0.0322237378125, + "99.99" : 0.0322237378125, + "99.999" : 0.0322237378125, + "99.9999" : 0.0322237378125, + "100.0" : 0.0322237378125 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.03180012509375, + 0.0318101265625, + 0.03182111275, + 0.03175653221875, + 0.0322237378125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.07814254024615384, + "scoreError" : 0.007312460845507015, + "scoreConfidence" : [ + 0.07083007940064683, + 0.08545500109166086 + ], + "scorePercentiles" : { + "0.0" : 0.07694204046153846, + "50.0" : 0.07727383461538462, + "90.0" : 0.0814555233076923, + "95.0" : 0.0814555233076923, + "99.0" : 0.0814555233076923, + "99.9" : 0.0814555233076923, + "99.99" : 0.0814555233076923, + "99.999" : 0.0814555233076923, + "99.9999" : 0.0814555233076923, + "100.0" : 0.0814555233076923 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.077030777, + 0.07727383461538462, + 0.07801052584615385, + 0.07694204046153846, + 0.0814555233076923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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" : 0.3388647174166667, + "scoreError" : 0.046480306446850354, + "scoreConfidence" : [ + 0.2923844109698163, + 0.38534502386351704 + ], + "scorePercentiles" : { + "0.0" : 0.31731686975, + "50.0" : 0.34382629466666664, + "90.0" : 0.3454126473333333, + "95.0" : 0.3454126473333333, + "99.0" : 0.3454126473333333, + "99.9" : 0.3454126473333333, + "99.99" : 0.3454126473333333, + "99.999" : 0.3454126473333333, + "99.9999" : 0.3454126473333333, + "100.0" : 0.3454126473333333 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.3454126473333333, + 0.344444769, + 0.34382629466666664, + 0.34332300633333335, + 0.31731686975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.001044809607916275, + "scoreError" : 6.934350982009601E-6, + "scoreConfidence" : [ + 0.0010378752569342655, + 0.0010517439588982847 + ], + "scorePercentiles" : { + "0.0" : 0.0010432686923879041, + "50.0" : 0.0010439834582463465, + "90.0" : 0.0010473029267782426, + "95.0" : 0.0010473029267782426, + "99.0" : 0.0010473029267782426, + "99.9" : 0.0010473029267782426, + "99.99" : 0.0010473029267782426, + "99.999" : 0.0010473029267782426, + "99.9999" : 0.0010473029267782426, + "100.0" : 0.0010473029267782426 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.001043388102189781, + 0.0010432686923879041, + 0.0010473029267782426, + 0.0010461048599791013, + 0.0010439834582463465 + ] + ] + }, + "secondaryMetrics" : { + } + } +] diff --git a/performance/2026-09-09-copy/after-sizes.jsonl b/performance/2026-09-09-copy/after-sizes.jsonl new file mode 100644 index 0000000..07ae672 --- /dev/null +++ b/performance/2026-09-09-copy/after-sizes.jsonl @@ -0,0 +1,7 @@ +{"corpus":"simpleText","level":6,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":31.336882,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"text","level":6,"originalSizeBytes":1232923,"compressedSizeBytes":506455,"singleRunMs":99.439416,"sha256":"3ba0571fcc563672f279cad303810e537dfc18ce61680207dfcd3e2e91abaf67"} +{"corpus":"model3D","level":6,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":1.304129,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"Rainier.bmp","level":6,"originalSizeBytes":6220854,"compressedSizeBytes":3283450,"singleRunMs":136.401175,"sha256":"fba9e4496d79c376317229a92a905be4351f5487e3db2a91d2287826db2bc7e3"} +{"corpus":"Maltese.bmp","level":6,"originalSizeBytes":16427390,"compressedSizeBytes":7158472,"singleRunMs":552.101098,"sha256":"cb10f06b36e0eaf03ebf81b8743a321d751979f5e671deb340405dfa6b8986b1"} +{"corpus":"Sunrise.bmp","level":6,"originalSizeBytes":52344054,"compressedSizeBytes":26838825,"singleRunMs":1687.994252,"sha256":"34a1e5b94bf2344b565dc7b11b44f6908bda919a1fea479b2b2e0f557fd26346"} +{"corpus":"compressed_MVT.pbf","level":6,"originalSizeBytes":146224,"compressedSizeBytes":92605,"singleRunMs":4.639995,"sha256":"87d498941e1d7cae4ee47930a9becc40606244a9e9e4c06d0ef21a3434093459"} diff --git a/performance/2026-09-09-copy/before-jmh.json b/performance/2026-09-09-copy/before-jmh.json new file mode 100644 index 0000000..4746dbc --- /dev/null +++ b/performance/2026-09-09-copy/before-jmh.json @@ -0,0 +1,758 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.93194514889324E-6, + "scoreError" : 3.590246562552351E-8, + "scoreConfidence" : [ + 2.8960426832677164E-6, + 2.9678476145187635E-6 + ], + "scorePercentiles" : { + "0.0" : 2.9198911792009434E-6, + "50.0" : 2.937624396763155E-6, + "90.0" : 2.939619984717569E-6, + "95.0" : 2.939619984717569E-6, + "99.0" : 2.939619984717569E-6, + "99.9" : 2.939619984717569E-6, + "99.99" : 2.939619984717569E-6, + "99.999" : 2.939619984717569E-6, + "99.9999" : 2.939619984717569E-6, + "100.0" : 2.939619984717569E-6 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.937624396763155E-6, + 2.939619984717569E-6, + 2.9198911792009434E-6, + 2.9387257524297516E-6, + 2.92386443135478E-6 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.007232048553226372, + "scoreError" : 0.0010341036274626966, + "scoreConfidence" : [ + 0.006197944925763676, + 0.008266152180689068 + ], + "scorePercentiles" : { + "0.0" : 0.006881791136986302, + "50.0" : 0.0071627811, + "90.0" : 0.007542633142857143, + "95.0" : 0.007542633142857143, + "99.0" : 0.007542633142857143, + "99.9" : 0.007542633142857143, + "99.99" : 0.007542633142857143, + "99.999" : 0.007542633142857143, + "99.9999" : 0.007542633142857143, + "100.0" : 0.007542633142857143 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.007542633142857143, + 0.0074577039111111115, + 0.0071627811, + 0.006881791136986302, + 0.007115333475177305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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" : 2.0344396794479103E-5, + "scoreError" : 1.8355203299059512E-7, + "scoreConfidence" : [ + 2.0160844761488507E-5, + 2.05279488274697E-5 + ], + "scorePercentiles" : { + "0.0" : 2.0270477675766604E-5, + "50.0" : 2.0341852339984135E-5, + "90.0" : 2.0398528246859195E-5, + "95.0" : 2.0398528246859195E-5, + "99.0" : 2.0398528246859195E-5, + "99.9" : 2.0398528246859195E-5, + "99.99" : 2.0398528246859195E-5, + "99.999" : 2.0398528246859195E-5, + "99.9999" : 2.0398528246859195E-5, + "100.0" : 2.0398528246859195E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.0341852339984135E-5, + 2.0398528246859195E-5, + 2.0370375364060367E-5, + 2.034075034572521E-5, + 2.0270477675766604E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.03723548875555556, + "scoreError" : 1.8062630636541877E-4, + "scoreConfidence" : [ + 0.037054862449190144, + 0.037416115061920975 + ], + "scorePercentiles" : { + "0.0" : 0.0371773132962963, + "50.0" : 0.03723746744444444, + "90.0" : 0.03729937422222222, + "95.0" : 0.03729937422222222, + "99.0" : 0.03729937422222222, + "99.9" : 0.03729937422222222, + "99.99" : 0.03729937422222222, + "99.999" : 0.03729937422222222, + "99.9999" : 0.03729937422222222, + "100.0" : 0.03729937422222222 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.03729937422222222, + 0.0371773132962963, + 0.03725716166666666, + 0.037206127148148145, + 0.03723746744444444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.09186511749242425, + "scoreError" : 0.009974472635420242, + "scoreConfidence" : [ + 0.08189064485700401, + 0.10183959012784449 + ], + "scorePercentiles" : { + "0.0" : 0.08909935616666667, + "50.0" : 0.09243374318181818, + "90.0" : 0.09517587063636364, + "95.0" : 0.09517587063636364, + "99.0" : 0.09517587063636364, + "99.9" : 0.09517587063636364, + "99.99" : 0.09517587063636364, + "99.999" : 0.09517587063636364, + "99.9999" : 0.09517587063636364, + "100.0" : 0.09517587063636364 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.09243374318181818, + 0.08909935616666667, + 0.09321690672727273, + 0.09517587063636364, + 0.08939971075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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" : 0.36387025573333337, + "scoreError" : 0.0014560055900551575, + "scoreConfidence" : [ + 0.3624142501432782, + 0.3653262613233885 + ], + "scorePercentiles" : { + "0.0" : 0.36330559933333334, + "50.0" : 0.36406046566666667, + "90.0" : 0.364174949, + "95.0" : 0.364174949, + "99.0" : 0.364174949, + "99.9" : 0.364174949, + "99.99" : 0.364174949, + "99.999" : 0.364174949, + "99.9999" : 0.364174949, + "100.0" : 0.364174949 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.36406046566666667, + 0.363658544, + 0.3641517206666667, + 0.36330559933333334, + 0.364174949 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKFlate", + "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.0010397620459435728, + "scoreError" : 1.171864790820453E-5, + "scoreConfidence" : [ + 0.0010280433980353683, + 0.0010514806938517773 + ], + "scorePercentiles" : { + "0.0" : 0.001037521616580311, + "50.0" : 0.001038356744813278, + "90.0" : 0.0010450220041797282, + "95.0" : 0.0010450220041797282, + "99.0" : 0.0010450220041797282, + "99.9" : 0.0010450220041797282, + "99.99" : 0.0010450220041797282, + "99.999" : 0.0010450220041797282, + "99.9999" : 0.0010450220041797282, + "100.0" : 0.0010450220041797282 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.0010450220041797282, + 0.001038356744813278, + 0.001038219346473029, + 0.001037521616580311, + 0.0010396905176715176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.919532077666487E-6, + "scoreError" : 4.777853517048225E-8, + "scoreConfidence" : [ + 2.8717535424960047E-6, + 2.9673106128369693E-6 + ], + "scorePercentiles" : { + "0.0" : 2.8981716944615064E-6, + "50.0" : 2.9226682212676427E-6, + "90.0" : 2.929965245231288E-6, + "95.0" : 2.929965245231288E-6, + "99.0" : 2.929965245231288E-6, + "99.9" : 2.929965245231288E-6, + "99.99" : 2.929965245231288E-6, + "99.999" : 2.929965245231288E-6, + "99.9999" : 2.929965245231288E-6, + "100.0" : 2.929965245231288E-6 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.8981716944615064E-6, + 2.9226682212676427E-6, + 2.929965245231288E-6, + 2.9257215770475114E-6, + 2.9211336503244875E-6 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.007146561565035149, + "scoreError" : 3.9354374150703454E-4, + "scoreConfidence" : [ + 0.006753017823528115, + 0.007540105306542183 + ], + "scorePercentiles" : { + "0.0" : 0.007065512338028169, + "50.0" : 0.007080835690140845, + "90.0" : 0.007296762079710145, + "95.0" : 0.007296762079710145, + "99.0" : 0.007296762079710145, + "99.9" : 0.007296762079710145, + "99.99" : 0.007296762079710145, + "99.999" : 0.007296762079710145, + "99.9999" : 0.007296762079710145, + "100.0" : 0.007296762079710145 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.007296762079710145, + 0.007065512338028169, + 0.007080835690140845, + 0.007080327098591549, + 0.007209370618705036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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" : 2.4061326448503435E-5, + "scoreError" : 1.9149537813733647E-7, + "scoreConfidence" : [ + 2.3869831070366098E-5, + 2.425282182664077E-5 + ], + "scorePercentiles" : { + "0.0" : 2.397510034759679E-5, + "50.0" : 2.4076277488927403E-5, + "90.0" : 2.4100537290055183E-5, + "95.0" : 2.4100537290055183E-5, + "99.0" : 2.4100537290055183E-5, + "99.9" : 2.4100537290055183E-5, + "99.99" : 2.4100537290055183E-5, + "99.999" : 2.4100537290055183E-5, + "99.9999" : 2.4100537290055183E-5, + "100.0" : 2.4100537290055183E-5 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 2.4076277488927403E-5, + 2.4100537290055183E-5, + 2.4067804360381173E-5, + 2.397510034759679E-5, + 2.4086912755556626E-5 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.036485281659523805, + "scoreError" : 0.0019160864296346258, + "scoreConfidence" : [ + 0.03456919522988918, + 0.03840136808915843 + ], + "scorePercentiles" : { + "0.0" : 0.035949011821428574, + "50.0" : 0.03648283321428571, + "90.0" : 0.03726242233333334, + "95.0" : 0.03726242233333334, + "99.0" : 0.03726242233333334, + "99.9" : 0.03726242233333334, + "99.99" : 0.03726242233333334, + "99.999" : 0.03726242233333334, + "99.9999" : 0.03726242233333334, + "100.0" : 0.03726242233333334 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.036178363678571426, + 0.03648283321428571, + 0.03655377725, + 0.03726242233333334, + 0.035949011821428574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.0977609525090909, + "scoreError" : 0.0032627424786608418, + "scoreConfidence" : [ + 0.09449821003043006, + 0.10102369498775175 + ], + "scorePercentiles" : { + "0.0" : 0.0968049689090909, + "50.0" : 0.09835438663636363, + "90.0" : 0.0984193239090909, + "95.0" : 0.0984193239090909, + "99.0" : 0.0984193239090909, + "99.9" : 0.0984193239090909, + "99.99" : 0.0984193239090909, + "99.999" : 0.0984193239090909, + "99.9999" : 0.0984193239090909, + "100.0" : 0.0984193239090909 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.09835438663636363, + 0.09836422527272727, + 0.09686185781818182, + 0.0968049689090909, + 0.0984193239090909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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" : 0.37588638806666663, + "scoreError" : 0.06430977900975521, + "scoreConfidence" : [ + 0.3115766090569114, + 0.44019616707642184 + ], + "scorePercentiles" : { + "0.0" : 0.3475418946666667, + "50.0" : 0.385907363, + "90.0" : 0.3862329153333333, + "95.0" : 0.3862329153333333, + "99.0" : 0.3862329153333333, + "99.9" : 0.3862329153333333, + "99.99" : 0.3862329153333333, + "99.999" : 0.3862329153333333, + "99.9999" : 0.3862329153333333, + "100.0" : 0.3862329153333333 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.385907363, + 0.38591651433333335, + 0.3862329153333333, + 0.373833253, + 0.3475418946666667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "com.rafambn.kflate.benchmark.CompressionBenchmarks.rawDeflateDecompressionFromKompress", + "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.0010341001300873862, + "scoreError" : 4.754397877352079E-6, + "scoreConfidence" : [ + 0.0010293457322100342, + 0.0010388545279647382 + ], + "scorePercentiles" : { + "0.0" : 0.00103234626625387, + "50.0" : 0.0010339683357438016, + "90.0" : 0.0010356674296066253, + "95.0" : 0.0010356674296066253, + "99.0" : 0.0010356674296066253, + "99.9" : 0.0010356674296066253, + "99.99" : 0.0010356674296066253, + "99.999" : 0.0010356674296066253, + "99.9999" : 0.0010356674296066253, + "100.0" : 0.0010356674296066253 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.0010347580299896587, + 0.0010339683357438016, + 0.0010337605888429751, + 0.00103234626625387, + 0.0010356674296066253 + ] + ] + }, + "secondaryMetrics" : { + } + } +] diff --git a/performance/2026-09-09-copy/before-sizes.jsonl b/performance/2026-09-09-copy/before-sizes.jsonl new file mode 100644 index 0000000..6f8562d --- /dev/null +++ b/performance/2026-09-09-copy/before-sizes.jsonl @@ -0,0 +1,70 @@ +{"corpus":"simpleText","level":0,"originalSizeBytes":100,"compressedSizeBytes":105,"singleRunMs":19.110286,"sha256":"7a4f86cab2c64d7a755ba6244b34b85122a3d7e629073b34930b3d477585100b"} +{"corpus":"simpleText","level":1,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":11.135421,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":2,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.339809,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":3,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.308436,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":4,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.307787,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":5,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.427485,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":6,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.237088,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":7,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.260698,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":8,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.223319,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"simpleText","level":9,"originalSizeBytes":100,"compressedSizeBytes":84,"singleRunMs":0.613511,"sha256":"dfc6c55d533c49b70bb5f358f19c146ad3443a985e6f76144b1ee4e16286e499"} +{"corpus":"text","level":0,"originalSizeBytes":1232923,"compressedSizeBytes":1233018,"singleRunMs":4.662521,"sha256":"cfab8f8c4f21f3b8b8b3cd60a85b7e1243a5aad2a06fa863e9eec73187488605"} +{"corpus":"text","level":1,"originalSizeBytes":1232923,"compressedSizeBytes":599813,"singleRunMs":54.971864,"sha256":"143d81705ac095d278fb6e1fa3932a500916369bc4596da6885cfe2e7d81f756"} +{"corpus":"text","level":2,"originalSizeBytes":1232923,"compressedSizeBytes":581519,"singleRunMs":34.914962,"sha256":"611557ab65d0c35387dfc6121636fd006ff3a237c3a838835f67e31cc79983ce"} +{"corpus":"text","level":3,"originalSizeBytes":1232923,"compressedSizeBytes":565252,"singleRunMs":35.214232,"sha256":"19a3c8ae4b1f0ed21ed27b0e0bb87c22d0ebf7259406f8d748c3d79c3d4888ee"} +{"corpus":"text","level":4,"originalSizeBytes":1232923,"compressedSizeBytes":531466,"singleRunMs":76.236611,"sha256":"d27df2bc4d16b3c9b193b68a7c72cc4208ed4505c2eaafbfc078fbfb29bdd3e1"} +{"corpus":"text","level":5,"originalSizeBytes":1232923,"compressedSizeBytes":521837,"singleRunMs":62.502913,"sha256":"49036c7d2710a45efdf31f3cb63b002ecffe3f8732566b65cd54997e02788bbd"} +{"corpus":"text","level":6,"originalSizeBytes":1232923,"compressedSizeBytes":506455,"singleRunMs":79.402608,"sha256":"3ba0571fcc563672f279cad303810e537dfc18ce61680207dfcd3e2e91abaf67"} +{"corpus":"text","level":7,"originalSizeBytes":1232923,"compressedSizeBytes":506097,"singleRunMs":76.984695,"sha256":"f7b312a37b78362b74cb5c5b1da94aaadec93a4629b19fc3d5cf5300498b993d"} +{"corpus":"text","level":8,"originalSizeBytes":1232923,"compressedSizeBytes":513489,"singleRunMs":80.517064,"sha256":"0008d4cc1d35364514f380a591ec7c01edc292742c5654a50795008ae3b6989c"} +{"corpus":"text","level":9,"originalSizeBytes":1232923,"compressedSizeBytes":492523,"singleRunMs":226.005639,"sha256":"dc70cee621bd4f3b0773d4001d396384e0eae4fe2eea0289bf3620b80d6670ca"} +{"corpus":"model3D","level":0,"originalSizeBytes":2478,"compressedSizeBytes":2483,"singleRunMs":0.047908,"sha256":"7d1354e385451c35f23c9be4ce28245d554943a2219ff0cf3481d5c0a02a4919"} +{"corpus":"model3D","level":1,"originalSizeBytes":2478,"compressedSizeBytes":2169,"singleRunMs":0.205138,"sha256":"cc762b082d3527b26e531d8f8cd04e17467595b5ef1ea32a541b275663e3ef96"} +{"corpus":"model3D","level":2,"originalSizeBytes":2478,"compressedSizeBytes":2168,"singleRunMs":0.177801,"sha256":"7be0094d5c194b33c4337a5c971d25c3ed4e2c3d1d195a75225130310d911733"} +{"corpus":"model3D","level":3,"originalSizeBytes":2478,"compressedSizeBytes":2166,"singleRunMs":0.189880,"sha256":"fa0c3d7374a90b6f9d7f14095e59ecd375b976cd57423d40e18d26332bf768c6"} +{"corpus":"model3D","level":4,"originalSizeBytes":2478,"compressedSizeBytes":2165,"singleRunMs":0.255062,"sha256":"b8bb6e5b0de2dac94d69e676871bd5538d16c6fc909b4a926a9fb42ca33d4846"} +{"corpus":"model3D","level":5,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":1.035481,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":6,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.328511,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":7,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.277878,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":8,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.172909,"sha256":"4b0cd916546275b9ae57fab7c6d88d94ed1e669669b30c158eb4c06e85e8f0ad"} +{"corpus":"model3D","level":9,"originalSizeBytes":2478,"compressedSizeBytes":2153,"singleRunMs":0.453659,"sha256":"450f6437d13a19585d0df05da961baf30023451a17612fd84a683a2f2f450ea7"} +{"corpus":"Rainier.bmp","level":0,"originalSizeBytes":6220854,"compressedSizeBytes":6221329,"singleRunMs":6.518850,"sha256":"acf3201e43c503d2705565195eb3bfc176e674b00bc8eeaf55411409398ffb7e"} +{"corpus":"Rainier.bmp","level":1,"originalSizeBytes":6220854,"compressedSizeBytes":3387685,"singleRunMs":103.339299,"sha256":"d86acee038a3272ef53f6be323c941d63ee7fc64544d489d3e81061ba2cb4296"} +{"corpus":"Rainier.bmp","level":2,"originalSizeBytes":6220854,"compressedSizeBytes":3357387,"singleRunMs":100.642784,"sha256":"cb08babeb442d0a7b5ef341c5114d36a9a40c0e9640c848accd37d151af8a3a6"} +{"corpus":"Rainier.bmp","level":3,"originalSizeBytes":6220854,"compressedSizeBytes":3345679,"singleRunMs":98.115353,"sha256":"3c62f22018cd809c25f3c70a9672872a0a0ec916ad89b7eca944c0415093b7dd"} +{"corpus":"Rainier.bmp","level":4,"originalSizeBytes":6220854,"compressedSizeBytes":3325593,"singleRunMs":100.792821,"sha256":"84cf1da1aa0fd2007e5de90ff81e779e616020cf3548affd456350296f12ce6c"} +{"corpus":"Rainier.bmp","level":5,"originalSizeBytes":6220854,"compressedSizeBytes":3313388,"singleRunMs":107.703654,"sha256":"54a7d786396e86dae90937df6dd8425d69557991ec611265a212ad85037e2b63"} +{"corpus":"Rainier.bmp","level":6,"originalSizeBytes":6220854,"compressedSizeBytes":3283450,"singleRunMs":120.385445,"sha256":"fba9e4496d79c376317229a92a905be4351f5487e3db2a91d2287826db2bc7e3"} +{"corpus":"Rainier.bmp","level":7,"originalSizeBytes":6220854,"compressedSizeBytes":3282047,"singleRunMs":106.943072,"sha256":"50d60b742c7b4bfdde3d0a3a6893995cace792bbad1dd85e475e40c4dc2c0221"} +{"corpus":"Rainier.bmp","level":8,"originalSizeBytes":6220854,"compressedSizeBytes":3274905,"singleRunMs":120.844731,"sha256":"d151041825a26ae58bd43d4dc8425663e8587cbfd23a49bf4023dd74d5a414c6"} +{"corpus":"Rainier.bmp","level":9,"originalSizeBytes":6220854,"compressedSizeBytes":3258570,"singleRunMs":3635.384653,"sha256":"03c9fd76a372debf3b4ded8a5ac7f85a1cdf1f5fb0d263963eecbc52147fdace"} +{"corpus":"Maltese.bmp","level":0,"originalSizeBytes":16427390,"compressedSizeBytes":16428645,"singleRunMs":13.464235,"sha256":"d872a98f975735016f16578b716b5c874f98e85abc101426d1142dd3a5c096d6"} +{"corpus":"Maltese.bmp","level":1,"originalSizeBytes":16427390,"compressedSizeBytes":8344362,"singleRunMs":294.982513,"sha256":"fbb73b9022879442d4e1f1ecb02baa6b1ac77119aafde5151b559e0b417dd98c"} +{"corpus":"Maltese.bmp","level":2,"originalSizeBytes":16427390,"compressedSizeBytes":7762283,"singleRunMs":351.024462,"sha256":"382e0863aa03871829f20b35a7d9f69c29108bbfcca7dd1d0097f782be3f8a2b"} +{"corpus":"Maltese.bmp","level":3,"originalSizeBytes":16427390,"compressedSizeBytes":7494606,"singleRunMs":385.071624,"sha256":"387c7f415e7da413a670c5ec9589ef69e744bf442195d53f60996d04c2d661dc"} +{"corpus":"Maltese.bmp","level":4,"originalSizeBytes":16427390,"compressedSizeBytes":7272625,"singleRunMs":357.776541,"sha256":"799d4909f60c7fa4262539af0c182ecf99fae272ed6b031524cf86ff2cef7693"} +{"corpus":"Maltese.bmp","level":5,"originalSizeBytes":16427390,"compressedSizeBytes":7265831,"singleRunMs":461.037056,"sha256":"d62521d1d682ba1afa24845265fcb768883997c5425775d8630b2feaab128464"} +{"corpus":"Maltese.bmp","level":6,"originalSizeBytes":16427390,"compressedSizeBytes":7158472,"singleRunMs":467.593585,"sha256":"cb10f06b36e0eaf03ebf81b8743a321d751979f5e671deb340405dfa6b8986b1"} +{"corpus":"Maltese.bmp","level":7,"originalSizeBytes":16427390,"compressedSizeBytes":7157735,"singleRunMs":474.172979,"sha256":"9ac4463c11aeaac8cc3ca316115118a45d1cec7fc7807cb6da67b58630de2f6b"} +{"corpus":"Maltese.bmp","level":8,"originalSizeBytes":16427390,"compressedSizeBytes":7125327,"singleRunMs":475.633565,"sha256":"a05331809efe04ca4434c5bfd57592571a22c5d30211715d6e24c3828903c640"} +{"corpus":"Maltese.bmp","level":9,"originalSizeBytes":16427390,"compressedSizeBytes":7034092,"singleRunMs":1313.906325,"sha256":"839db5fb3ea325162ced4ed8675e03aeac77e96099385c08d2c9d7140741d60e"} +{"corpus":"Sunrise.bmp","level":0,"originalSizeBytes":52344054,"compressedSizeBytes":52348049,"singleRunMs":30.229070,"sha256":"4ab78a3e1ba97388ff3dd5e00d9e134bceeb1b5eb3edc7aaf7845c1377fea548"} +{"corpus":"Sunrise.bmp","level":1,"originalSizeBytes":52344054,"compressedSizeBytes":27793016,"singleRunMs":935.440073,"sha256":"7028cd0b1e7d73172e76063b6004aedee371667bca442e8a68ca718f36dac355"} +{"corpus":"Sunrise.bmp","level":2,"originalSizeBytes":52344054,"compressedSizeBytes":27471887,"singleRunMs":1119.619018,"sha256":"38fe2dd9e078be3c88adf86d15cc2da3187ea4c8919a73284f431e68dd9b7392"} +{"corpus":"Sunrise.bmp","level":3,"originalSizeBytes":52344054,"compressedSizeBytes":27404419,"singleRunMs":1214.545204,"sha256":"158c5cb3eb8d7023dc234ec5ae5e4e0d64be93f8c0f2f250bf05da65d5c9aff3"} +{"corpus":"Sunrise.bmp","level":4,"originalSizeBytes":52344054,"compressedSizeBytes":27107867,"singleRunMs":1286.277248,"sha256":"c42c56683342f532ce402a90d066e23d688a19221200648c26ce3b11621cc2e0"} +{"corpus":"Sunrise.bmp","level":5,"originalSizeBytes":52344054,"compressedSizeBytes":27096750,"singleRunMs":1535.950681,"sha256":"734bc825d4f1374115b66c64e1f56edf46c8978185ddaecffd9adc87a2e4c12e"} +{"corpus":"Sunrise.bmp","level":6,"originalSizeBytes":52344054,"compressedSizeBytes":26838825,"singleRunMs":1698.570802,"sha256":"34a1e5b94bf2344b565dc7b11b44f6908bda919a1fea479b2b2e0f557fd26346"} +{"corpus":"Sunrise.bmp","level":7,"originalSizeBytes":52344054,"compressedSizeBytes":26827604,"singleRunMs":1938.962997,"sha256":"cb202e01985166da6621d97ab386edff2eb4274eb8f1237aff36390543dcf18c"} +{"corpus":"Sunrise.bmp","level":8,"originalSizeBytes":52344054,"compressedSizeBytes":26728454,"singleRunMs":2147.760615,"sha256":"7570e8999cbda1a50c9693338f4a11dcf5aed8f6f45ff4cc1def7c3ee945541b"} +{"corpus":"Sunrise.bmp","level":9,"originalSizeBytes":52344054,"compressedSizeBytes":26372269,"singleRunMs":14273.467996,"sha256":"4a6c5eb215fe50a55a4a8c23aefa08c900d0282ef35611dbb9420055869fa986"} +{"corpus":"compressed_MVT.pbf","level":0,"originalSizeBytes":146224,"compressedSizeBytes":146239,"singleRunMs":0.057599,"sha256":"d8239f92d78f0d7fc3e9e9d8557e35365184e7d8c7f432339a8375c422a61c13"} +{"corpus":"compressed_MVT.pbf","level":1,"originalSizeBytes":146224,"compressedSizeBytes":95812,"singleRunMs":2.868651,"sha256":"8e921cc121ff9a262119bd7a2124a36039b95a26a5095349d08ea9b776c0ba34"} +{"corpus":"compressed_MVT.pbf","level":2,"originalSizeBytes":146224,"compressedSizeBytes":94608,"singleRunMs":3.366192,"sha256":"52efa74d70a15df6fa9d67da07da404b7e4628f895f65ddaa94148161762c45c"} +{"corpus":"compressed_MVT.pbf","level":3,"originalSizeBytes":146224,"compressedSizeBytes":94345,"singleRunMs":3.900655,"sha256":"a4090d9493e7e896ce6bc3f1c454e23738aa2e35e5418abb8d98c9f6dafaec94"} +{"corpus":"compressed_MVT.pbf","level":4,"originalSizeBytes":146224,"compressedSizeBytes":93369,"singleRunMs":3.780884,"sha256":"41844dbfb741b35e7e91c17ad039e1439e9601af58a3f70c6a83cac1e5f9491e"} +{"corpus":"compressed_MVT.pbf","level":5,"originalSizeBytes":146224,"compressedSizeBytes":93229,"singleRunMs":4.376360,"sha256":"169dee1b2849bae5fbfcdfd0daaece65729fe589980485d0b441c19050dd97b8"} +{"corpus":"compressed_MVT.pbf","level":6,"originalSizeBytes":146224,"compressedSizeBytes":92605,"singleRunMs":4.516753,"sha256":"87d498941e1d7cae4ee47930a9becc40606244a9e9e4c06d0ef21a3434093459"} +{"corpus":"compressed_MVT.pbf","level":7,"originalSizeBytes":146224,"compressedSizeBytes":92610,"singleRunMs":4.480153,"sha256":"5eb82ecc19fbb18428eceb3e508c2dfdbe4a648bc52733e8db70bd223c732f65"} +{"corpus":"compressed_MVT.pbf","level":8,"originalSizeBytes":146224,"compressedSizeBytes":92631,"singleRunMs":4.948836,"sha256":"00be763dadfed2e2d09467a7da0f564897ddc75421fab3bf3150836470ed0a62"} +{"corpus":"compressed_MVT.pbf","level":9,"originalSizeBytes":146224,"compressedSizeBytes":91727,"singleRunMs":9.722668,"sha256":"60d5160deb2f35070d7c0e456dad3a8685eb65495c9e4a1d4372b8b105211c38"}