Full625-frame Eiger HDF5 comparison

Measured November5,2026, Apple M4 Pro. Each pass reads/decompresses the complete5.69GB file, then integrates with the same fixed mask and settings. Repeated passes use the OS file cache; cold physical-device bandwidth is not measured.

PathIntensity frames/sWhole fileWith Poisson frames/sWhole file
h5py stream → Dioptrin23.426.68s23.726.42s
Parallel decode → Dioptrin182.03.43s156.53.99s
Reusable-buffer decode → Dioptrin193.13.24s172.33.63s
Jon: fused decode + CSC222.32.81s161.13.88s

The current h5py producer limits the stream to about23frames/s, while the parallel paths use much more of the machine. The integration-only gain does not translate directly into full-file throughput: read/decode/float64 conversion alone reaches 358.3frames/s, and those stages precede integration in the staged Dioptrin path. Jon's fused path avoids materializing a whole float64 image. Dioptrin remains float64-weighted; Jon uses float32 coefficients. With errors, this Jon adapter reads a doubled signal/variance matrix.

Primary optimized numbers come from five alternating direct paired passes. Standard h5py and parallel allocation numbers come from three whole-file passes. The CSV retains every measured range and observed process/other-process CPU load; different runs experience ordinary host-load variability.

Protocol

All results/ranges · Numerical checks · Input/build provenance · Benchmark source

Reproduce run.py followed by run_paired.py, then summarize.py. Large HDF5 inputs, mask and exported LUT stay outside Git at their recorded paths. No Dioptas code was modified.