This had /way/ more impact than I expected on overall decompression performance. Here are the baseline numbers for 1.8 (jdk 11 64bit):
Benchmark (file) Mode Cnt Score Error Units XZDecompressionBenchmark.decompress ihe_ovly_pr.dcm avgt 3 0.731 ± 0.010 ms/op XZDecompressionBenchmark.decompress image1.dcm avgt 3 445.394 ± 7.052 ms/op XZDecompressionBenchmark.decompress large.xml avgt 3 283.013 ± 5.004 ms/op XZ2DecompressionBenchmark.decompress 1 byte rep avgt 3 587.127 ± 7.254 ms/op Here are numbers with current trunk, which is basically just the crc64 change: Benchmark (file) Mode Cnt Score Error Units XZDecompressionBenchmark.decompress ihe_ovly_pr.dcm avgt 3 0.662 ± 0.012 ms/op XZDecompressionBenchmark.decompress image1.dcm avgt 3 391.644 ± 13.871 ms/op XZDecompressionBenchmark.decompress large.xml avgt 3 225.456 ± 16.265 ms/op XZ2DecompressionBenchmark.decompress 1 byte rep avgt 3 387.347 ± 18.811 ms/op And the LZDecoder change gets it down to: Benchmark (file) Mode Cnt Score Error Units XZDecompressionBenchmark.decompress ihe_ovly_pr.dcm avgt 3 0.607 ± 0.187 ms/op XZDecompressionBenchmark.decompress image1.dcm avgt 3 369.419 ± 32.400 ms/op XZDecompressionBenchmark.decompress large.xml avgt 3 190.580 ± 7.856 ms/op XZ2DecompressionBenchmark.decompress 1 byte rep avgt 3 220.554 ± 8.812 ms/op Brett