JDeli performance comparison
Below are all the performances comparisons we have done so far (as of 6th May 2026). We will regularly update and add new results.
How we tested
The speed figures were generated using jmh (as documented on our blog) with a standard set of images (also documented), and the quality tests for writing was determined testing SSIM(Structural Similarity Index). They should be easy to replicate if you wish to validate, the code is on GitHub.
Your figures may vary depending on system but the overall results should be comparable.
BMP
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIO | 56.383 | ± 0.373 |
| JDeli | 171.242 | ± 0.124 |
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 10.684 | ± 0.027 |
| ImageIO | 5.288 | ± 0.484 |
| JDeli | 17.223 | ± 0.064 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| Apache | 4.76Mb | 0 | 1.0 | Identical or virtually identical |
| ImageIO | 4.73Mb | 30 | 0.4430668957720272 | Very different |
| JDeli | 4.83Mb | 0 | 0.9684172944944214 | Very similar (high quality) |
GIF
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 4.380 | ± 0.011 |
| ImageIO | 1.652 | ± 0.011 |
| JDeli | 5.357 | ± 0.140 |
Writing
| Benchmark | Score | Error |
|---|---|---|
| Apache | 1.705 | ± 0.251 |
| ImageIO | 4.713 | ± 0.025 |
| JDeli | 0.538 | ± 0.003 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| Apache | 590.01KB | 0 | 0.8785090614816008 | Similar (noticeable but minor differences) |
| ImageIO | 404.11KB | 4 | 0.18769307741202973 | Very different |
| JDeli | 721.95KB | 0 | 0.8284792072170122 | Moderately similar (visible differences) |
JPEG
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIO | 0.143 | ± 0.001 |
| JDeli | 0.162 | ± 0.001 |
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIO | 13.345 | ± 0.049 |
| ImageIO_high | 10.049 | ± 0.033 |
| ImageIO_low | 13.989 | ± 0.040 |
| JDeli | 28.073 | ± 0.513 |
| JDeli_high | 15.778 | ± 0.126 |
| JDeli_low | 29.451 | ± 0.491 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| ImageIO | 201.10KB | 36 | 0.9843408924688256 | Very similar (high quality) |
| ImageIO_high | 922.64KB | 36 | 0.9955252550315202 | Identical or virtually identical |
| ImageIO_low | 110.37KB | 36 | 0.753963280422963 | Moderately similar (visible differences) |
| JDeli | 232.06KB | 0 | 0.9635278566129812 | Very similar (high quality) |
| JDeli_high | 1,484.97KB | 0 | 0.9824853317459952 | Very similar (high quality) |
| JDeli_low | 132.199KB | 0 | 0.7308454760175299 | Moderately similar (visible differences) |
JPEG2000
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIOWithJAI | 48.971 | ± 0.098 |
| JDeli | 123.793 | ± 0.135 |
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIOWithJAI | 2.306 | ± 0.007 |
| JDeli_JP2 | 6.226 | ± 0.023 |
| JDeli_JPX | 6.228 | ± 0.020 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| ImageIOWithJAI | 1,419.60KB | 0 | 0.9659635878077559 | Very similar (high quality) |
| JDeli JP2 | 288.66KB | 0 | 0.8817187006016771 | Similar (noticeable but minor differences) |
| JDeli JPX | 277.31KB | 0 | 0.8817187006016771 | Similar (noticeable but minor differences) |
PNG
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 1151.556 | ± 12.405 |
| ImageIO | 296.915 | ± 12.564 |
| JDeli | 2160.496 | ± 43.874 |
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 5.100 | ± 0.018 |
| ImageIO | 4.819 | ± 0.010 |
| ImageIO_fast | 5.597 | ± 0.014 |
| ImageIO_max_comp | 3.512 | ± 0.008 |
| JDeli | 5.383 | ± 0.033 |
| JDeli_quantised | 1.192 | ± 0.001 |
| JDeli_fast | 13.061 | ± 0.026 |
| JDeli_compressed | 5.402 | ± 0.027 |
| JDeli_uncompressed | 12.985 | ± 0.088 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| Apache | 2.61MB | 0 | 0.967281580718986 | Very similar (high quality) |
| ImageIO | 2.64MB | 0 | 1.0 | Identical or virtually identical |
| ImageIO_fast | 2.74MB | 0 | 1.0 | Identical or virtually identical |
| ImageIO_max_comp | 2.62MB | 0 | 1.0 | Identical or virtually identical |
| JDeli | 2.62MB | 0 | 1.0 | Identical or virtually identical |
| JDeli_compressed | 2.62MB | 0 | 1.0 | Identical or virtually identical |
| JDeli_fast | 2.74MB | 0 | 1.0 | Identical or virtually identical |
| JDeli_quantised | 0.514MB | 0 | 0.9926136438484626 | Identical or virtually identical |
| JDeli_uncompressed | 2.74MB | 0 | 1.0 | Identical or virtually identical |
TIFF
Reading
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 6.601 | ± 0.119 |
| ImageIO | 7.976 | ± 0.140 |
| JDeli | 11.298 | ± 0.363 |
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| Apache | 4.140 | ± 0.070 |
| ImageIO_Deflate | 4.533 | ± 0.054 |
| ImageIO_JPEG | 7.788 | ± 0.084 |
| ImageIO_LZW | 4.265 | ± 0.043 |
| ImageIO_uncompressed | 9.213 | ± 0.029 |
| JDeli_better_comp | 5.484 | ± 0.007 |
| JDeli_better_speed | 13.116 | ± 0.026 |
| JDeli_deflate | 6.361 | ± 0.017 |
| JDeli_jpeg | 25.160 | ± 1.732 |
| JDeli_LZW | 9.473 | ± 0.027 |
| JDeli_uncompressed | 99.850 | ± 3.051 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| Apache | 1.83MB | 1 | 1.0 | Identical or virtually identical |
| ImageIO_deflate | 2.78MB | 1 | 1.0 | Identical or virtually identical |
| ImageIO_jpeg | 0.87MB | 114 | 0.9964492586342384 | Identical or virtually identical |
| ImageIO_lzw | 3.89MB | 1 | 1.0 | Identical or virtually identical |
| ImageIO_uncompressed | 4.84MB | 1 | 1.0 | Identical or virtually identical |
| JDeli_better_comp | 2.66MB | 1 | 1.0 | Identical or virtually identical |
| JDeli_better_speed | 2.78MB | 1 | 1.0 | Identical or virtually identical |
| JDeli_deflate | 2.66MB | 1 | 1.0 | Identical or virtually identical |
| JDeli_jpeg | 0.26MB | 1 | 0.8720826599375827 | Similar (noticeable but minor differences) |
| JDeli_lzw | 3.88MB | 1 | 1.0 | Identical or virtually identical |
| JDeli_uncompressed | 4.84MB | 1 | 1.0 | Identical or virtually identical |
WEBP
Writing
Mode: Throughput Count: 25 Units: ops/s
| Benchmark | Score | Error |
|---|---|---|
| ImageIO with darkxanter | 6.508 | ± 0.044 |
| JDeli_loss | 3.659 | ± 0.034 |
| JDeli_lossless | 4.632 | ± 0.049 |
Number of files: 166
| Benchmark | Size | unreadable output | AVG SSIM score | AVG Similarity |
|---|---|---|---|---|
| ImageIO with darkxanter | 78.54KB | 28 | 0.9764829133391945 | Very similar (high quality) |
| JDeli lossy | 1,506.67KB | 2 | 0.9539262155199079 | Very similar (high quality) |
| JDeli lossless | 88.82KB | 0 | 0.9684172944944212 | Very similar (high quality) |