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

Reply via email to