Skip to content
Image docs0.3

Performance Selection

Latest stable Based on Image release 0.3.0

The repository benchmark compares Scrimage and libvips operations, I/O boundaries, streaming, concurrency, and memory. Use it to form a hypothesis, not as a universal ranking.

Separate decode, transform, encode, file read/write, network transfer, and queue time. A faster resize kernel may not improve a request dominated by object storage or encoding. Measure representative dimensions, codecs, quality settings, operation chains, and concurrency.

Check metric direction: lower average latency is better, while higher throughput is better. Confirm JDK, backend, fixture, warmup, iterations, and whether GC or native memory is included. The release reports include focused evidence for resize, encode, filters, pipeline allocation, I/O boundary, file throughput, large streaming, and memory.

Record:

  • maximum input bytes and decoded pixels;
  • latency percentile and throughput target;
  • JVM heap and native-memory limit;
  • maximum concurrent OCR or native operations;
  • output quality and size constraints.

Then run a service-level test that includes storage and framework overhead. If Scrimage meets the budget, its simpler deployment can outweigh a lower native kernel time. If it does not, test one libvips backend on the real host.

Do not extrapolate Java 25 FFM results to Java 21 JNI, or a natural-photo fixture to documents and alpha-heavy graphics. See interpreting benchmark results.