What this page records
The baseline used 3 measured runs after 1 warmup per workload, with an isolated process for each run. It contains 13 representative measurements and 30 correctness-only measurements; correctness-only rows verify reader contracts without claiming representative large-input performance.
Recorded on Aug 15, 2026 from commit 6acf53304b44 using Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz with 16 logical CPUs. The benchmark process reported Linux 6.17.0-41-generic.
Measurement boundary
Each workload opens a scientific source through the same public reader boundary, detects and opens its document, enumerates datasets, opens the selected dataset, reads the selected plane or series, validates the result, and closes all resources. The report keeps process startup, module import, registry construction, fixture preparation, and validation evidence separate from the core operation timing.
- Timing: total wall time, time to the first emitted block, and complete selected operation are reported as median / p95.
- Source behavior: read calls, requested and returned bytes, unique source bytes touched, overfetch, and companion resolution are measured.
- Memory: absolute process peak RSS is accompanied by external memory, ArrayBuffer memory, output bytes, and the largest emitted block.
- Correctness: output sample type, component count, selected sample count, block count, and format-specific calibration assertions are checked before a result is published.
Reader coverage
Reader-level values below are the maximum median observed among that reader's baseline workloads. They are useful for finding source and memory boundaries, not for ranking unrelated formats against one another.
| Reader | Workloads | Representative | Max reads | Max overfetch | Max peak RSS |
|---|---|---|---|---|---|
| Gwyddion Simple Field | 2 | 1 | 32 | 2.46× | 118.2 MiB |
| Nanonis SXM | 1 | 1 | 48 | 2.02× | 124.6 MiB |
| Igor Binary Wave v5 | 1 | 1 | 55 | 1.02× | 124.4 MiB |
| Digital Surf SUR/PRO | 1 | 1 | 34 | 2.41× | 116.2 MiB |
| X3P surface exchange | 1 | 1 | 45 | 6.75× | 119.8 MiB |
| ENVI | 1 | 0 | 34 | 1.03× | 117.8 MiB |
| FITS | 1 | 1 | 32 | 2.29× | 119.1 MiB |
| MRC/CCP4 | 1 | 0 | 32 | 7.23× | 113.5 MiB |
| CBF/imgCIF | 1 | 0 | 32 | 8.42× | 120.0 MiB |
| PNG | 1 | 1 | 69 | 9.91× | 117.2 MiB |
| JPEG | 1 | 1 | 88 | 20.47× | 130.4 MiB |
| WebP | 1 | 1 | 34 | 4.82× | 126.3 MiB |
| BMP | 1 | 1 | 38 | 2.18× | 115.5 MiB |
| JPEG 2000 / JP2 | 1 | 1 | 74 | 10.64× | 120.4 MiB |
| TIFF | 3 | 1 | 55 | 1.44× | 120.4 MiB |
| OME-TIFF | 1 | 0 | 43 | 10.68× | 118.7 MiB |
| Aperio SVS | 2 | 1 | 85 | 1.07× | 131.8 MiB |
| Gatan DigitalMicrograph | 2 | 0 | 1,370 | 7.88× | 129.2 MiB |
| FEI/Thermo TIA SER | 2 | 0 | 68 | 1.29× | 118.0 MiB |
| FEI/Thermo TIA EMI | 1 | 0 | 47 | 2.92× | 116.4 MiB |
| NCEM EMD 0.2 | 1 | 0 | 43 | 4.29× | 120.2 MiB |
| FEI/Thermo Velox EMD | 2 | 0 | 51 | 2.06× | 136.4 MiB |
| Lispix RPL/RAW | 1 | 0 | 35 | 9.86× | 119.5 MiB |
| EMSA/MAS spectrum | 1 | 0 | 32 | 7.39× | 114.3 MiB |
| NRRD | 2 | 0 | 34 | 13.28× | 120.2 MiB |
| MetaImage MHD/MHA | 2 | 0 | 34 | 10.93× | 123.4 MiB |
| NIfTI-1/2 | 2 | 0 | 35 | 13.19× | 121.2 MiB |
| NumPy NPY | 2 | 0 | 35 | 10.51× | 119.2 MiB |
| NanoMegas ASTAR blockfile | 1 | 0 | 36 | 5.45× | 114.6 MiB |
| Quantum Detectors Merlin MIB | 1 | 0 | 35 | 9.90× | 115.1 MiB |
| ANG/CTF orientation map | 2 | 0 | 32 | 9.82× | 117.8 MiB |
Baseline workload detail
Timing and source columns show median / p95 where both are available. Peak RSS is the median absolute process peak. The workload title and support boundary describe the fixture-backed claim; they do not imply a universal guarantee for every file in that format.
| Workload | Reader | Class | Status | Wall ms | First block | Reads | Overfetch | Peak RSS |
|---|---|---|---|---|---|---|---|---|
| GSF numeric surface plane | Gwyddion Simple Field | Representative | supported | 3.9 ms / 5.4 ms | 0.10 ms / 0.16 ms | 32 / 32 | 2.46× / 2.46× | 118.2 MiB |
| Nanonis SXM AFM plane | Nanonis SXM | Representative | supported | 8.6 ms / 12.9 ms | 1.4 ms / 1.9 ms | 48 / 48 | 2.02× / 2.02× | 124.6 MiB |
| Igor binary wave plane | Igor Binary Wave v5 | Representative | supported | 8.8 ms / 8.9 ms | 1.6 ms / 2.1 ms | 55 / 55 | 1.02× / 1.02× | 124.4 MiB |
| Digital Surf compressed surface plane | Digital Surf SUR/PRO | Representative | supported | 4.8 ms / 5.0 ms | 0.17 ms / 0.19 ms | 34 / 34 | 2.41× / 2.41× | 116.2 MiB |
| X3P ISO 5436 plane | X3P surface exchange | Representative | supported | 4.9 ms / 5.1 ms | 0.56 ms / 0.59 ms | 45 / 45 | 6.75× / 6.75× | 119.8 MiB |
| ENVI hyperspectral band plane | ENVI | Correctness-only | supported | 3.8 ms / 4.1 ms | 0.30 ms / 0.32 ms | 34 / 34 | 1.03× / 1.03× | 117.8 MiB |
| FITS cube plane | FITS | Representative | supported | 4.6 ms / 4.8 ms | 0.30 ms / 0.31 ms | 32 / 32 | 2.29× / 2.29× | 119.1 MiB |
| MRC volume plane | MRC/CCP4 | Correctness-only | supported | 3.0 ms / 3.1 ms | 0.11 ms / 0.11 ms | 32 / 32 | 7.23× / 7.23× | 113.5 MiB |
| CBF detector frame | CBF/imgCIF | Correctness-only | supported | 3.3 ms / 3.8 ms | 0.11 ms / 0.11 ms | 32 / 32 | 8.42× / 8.42× | 120.0 MiB |
| PNG scientific image adapter | PNG | Representative | supported | 4.9 ms / 4.9 ms | 1.3 ms / 1.4 ms | 69 / 69 | 9.91× / 9.91× | 117.2 MiB |
| JPEG scientific image adapter | JPEG | Representative | supported | 16.5 ms / 16.6 ms | 6.0 ms / 8.2 ms | 88 / 88 | 20.47× / 20.47× | 130.4 MiB |
| WebP scientific image adapter | WebP | Representative | supported | 19.6 ms / 20.0 ms | 1.6 ms / 1.9 ms | 34 / 34 | 4.82× / 4.82× | 126.3 MiB |
| BMP scientific image adapter | BMP | Representative | supported | 3.2 ms / 3.2 ms | 0.30 ms / 0.30 ms | 38 / 38 | 2.18× / 2.18× | 115.5 MiB |
| JPEG 2000 scientific image adapter | JPEG 2000 / JP2 | Representative | supported | 5.4 ms / 5.7 ms | 1.6 ms / 1.6 ms | 74 / 74 | 10.64× / 10.64× | 120.4 MiB |
| Ordinary TIFF bounded region | TIFF | Representative | supported | 5.6 ms / 6.5 ms | 0.59 ms / 0.89 ms | 55 / 55 | 1.44× / 1.44× | 118.7 MiB |
| OME-TIFF metadata and plane | OME-TIFF | Correctness-only | supported | 4.8 ms / 15.8 ms | 0.54 ms / 0.69 ms | 43 / 43 | 10.68× / 10.68× | 118.7 MiB |
| Aperio SVS whole-slide region | Aperio SVS | Representative | supported | 19.7 ms / 28.5 ms | 8.0 ms / 13.0 ms | 70 / 70 | 1.03× / 1.03× | 128.3 MiB |
| DigitalMicrograph ordinary 2D image | Gatan DigitalMicrograph | Correctness-only | supported | 39.4 ms / 44.1 ms | 0.38 ms / 0.40 ms | 1,370 / 1,370 | 2.24× / 2.24× | 129.2 MiB |
| DigitalMicrograph 4D-STEM diffraction plane | Gatan DigitalMicrograph | Correctness-only | supported | 9.8 ms / 13.7 ms | 0.32 ms / 0.48 ms | 190 / 190 | 7.88× / 7.88× | 120.1 MiB |
| TIA SER image element plane | FEI/Thermo TIA SER | Correctness-only | supported | 6.3 ms / 7.5 ms | 0.22 ms / 0.33 ms | 58 / 58 | 1.29× / 1.29× | 116.9 MiB |
| TIA SER spectrum-image energy series | FEI/Thermo TIA SER | Correctness-only | supported | 5.3 ms / 6.0 ms | 0.22 ms / 0.30 ms | 68 / 68 | 1.23× / 1.23× | 118.0 MiB |
| TIA EMI metadata with SER companion plane | FEI/Thermo TIA EMI | Correctness-only | supported | 7.2 ms / 7.4 ms | 0.19 ms / 0.20 ms | 47 / 47 | 2.92× / 2.92× | 116.4 MiB |
| NCEM EMD image plane | NCEM EMD 0.2 | Correctness-only | supported | 7.4 ms / 7.5 ms | 0.47 ms / 0.53 ms | 43 / 43 | 4.29× / 4.29× | 120.2 MiB |
| Velox EMD image plane | FEI/Thermo Velox EMD | Correctness-only | supported | 41.6 ms / 43.7 ms | 0.59 ms / 0.63 ms | 49 / 49 | 2.04× / 2.04× | 136.4 MiB |
| Velox EMD complex FFT plane | FEI/Thermo Velox EMD | Correctness-only | supported | 27.5 ms / 28.0 ms | 0.70 ms / 0.82 ms | 51 / 51 | 2.06× / 2.06× | 133.8 MiB |
| RPL/RAW depth-fixed plane | Lispix RPL/RAW | Correctness-only | supported | 3.8 ms / 4.1 ms | 0.43 ms / 0.46 ms | 35 / 35 | 9.86× / 9.86× | 119.5 MiB |
| EMSA calibrated spectrum series | EMSA/MAS spectrum | Correctness-only | supported | 2.6 ms / 2.9 ms | 0.05 ms / 0.06 ms | 32 / 32 | 7.39× / 7.39× | 114.3 MiB |
| NRRD raw plane | NRRD | Correctness-only | supported | 3.0 ms / 3.4 ms | 0.32 ms / 0.37 ms | 34 / 34 | 13.28× / 13.28× | 118.6 MiB |
| NRRD gzip plane | NRRD | Correctness-only | supported | 3.9 ms / 4.0 ms | 0.10 ms / 0.11 ms | 33 / 33 | 12.40× / 12.40× | 120.2 MiB |
| MetaImage local payload plane | MetaImage MHD/MHA | Correctness-only | supported | 3.1 ms / 3.3 ms | 0.36 ms / 0.40 ms | 34 / 34 | 10.93× / 10.93× | 119.9 MiB |
| MetaImage detached payload plane | MetaImage MHD/MHA | Correctness-only | supported | 3.1 ms / 3.2 ms | 0.21 ms / 0.22 ms | 33 / 33 | 10.54× / 10.54× | 123.4 MiB |
| NIfTI scaled plane | NIfTI-1/2 | Correctness-only | supported | 3.4 ms / 4.0 ms | 0.38 ms / 0.40 ms | 35 / 35 | 9.02× / 9.02× | 118.8 MiB |
| Gzip NIfTI scaled plane | NIfTI-1/2 | Correctness-only | supported | 5.5 ms / 9.1 ms | 0.11 ms / 0.11 ms | 34 / 34 | 13.19× / 13.19× | 121.2 MiB |
| NPY C-order plane | NumPy NPY | Correctness-only | supported | 4.1 ms / 12.2 ms | 0.43 ms / 0.87 ms | 35 / 35 | 10.51× / 10.51× | 119.2 MiB |
| NPY Fortran-order plane | NumPy NPY | Correctness-only | supported | 2.7 ms / 2.9 ms | 0.27 ms / 0.29 ms | 35 / 35 | 10.51× / 10.51× | 118.4 MiB |
| BLO 4D-STEM diffraction plane | NanoMegas ASTAR blockfile | Correctness-only | supported | 3.3 ms / 4.2 ms | 0.53 ms / 0.56 ms | 36 / 36 | 5.45× / 5.45× | 114.6 MiB |
| MIB 4D-STEM diffraction plane | Quantum Detectors Merlin MIB | Correctness-only | supported | 3.2 ms / 3.8 ms | 0.45 ms / 0.55 ms | 35 / 35 | 9.90× / 9.90× | 115.1 MiB |
| EBSD ANG map plane | ANG/CTF orientation map | Correctness-only | supported | 3.0 ms / 3.1 ms | 0.08 ms / 0.08 ms | 32 / 32 | 9.82× / 9.82× | 117.8 MiB |
| EBSD CTF map plane | ANG/CTF orientation map | Correctness-only | supported | 2.7 ms / 2.8 ms | 0.08 ms / 0.08 ms | 32 / 32 | 9.40× / 9.40× | 114.3 MiB |
| TIFF metadata-only open | TIFF | Correctness-only | supported | 4.8 ms / 5.1 ms | — | 50 / 50 | 1.33× / 1.33× | 118.2 MiB |
| TIFF first emitted block | TIFF | Correctness-only | supported | 5.4 ms / 6.4 ms | 0.77 ms / 0.81 ms | 55 / 55 | 1.44× / 1.44× | 120.4 MiB |
| GSF full selected plane | Gwyddion Simple Field | Correctness-only | supported | 4.6 ms / 4.6 ms | 0.33 ms / 0.33 ms | 32 / 32 | 2.46× / 2.46× | 115.9 MiB |
| Aperio random direct regions | Aperio SVS | Correctness-only | supported | 33.5 ms / 34.2 ms | 7.8 ms / 7.8 ms | 85 / 85 | 1.07× / 1.07× | 131.8 MiB |
Range-backed coverage
The separate range profile covers 24 direct-range workloads across 19 readers at 0, 5, 25, 100 ms of underlying-read latency. It is designed to expose round-trip sensitivity and coalescing behavior without pretending that a full-file reader has remote range semantics.
Nanonis SXM, Igor Binary Wave v5, X3P surface exchange, ENVI, FITS, MRC/CCP4, TIFF, OME-TIFF, Aperio SVS, Gatan DigitalMicrograph, FEI/Thermo TIA SER, FEI/Thermo TIA EMI, NCEM EMD 0.2, FEI/Thermo Velox EMD, Lispix RPL/RAW, MetaImage MHD/MHA, NumPy NPY, NanoMegas ASTAR blockfile, Quantum Detectors Merlin MIB.
The published snapshot above is the zero-latency baseline. Run the range profile locally for the expanded latency matrix and inspect its isolated-process report before making performance claims.
Reproduce the evidence
The harness and fixture policy are documented in the repository's scientific reader source and memory harness section.
npm run bench:scientific:smoke
npm run bench:scientific:baseline
npm run bench:scientific:range
npm run bench:scientific:fullUse smoke for a fast contract check, baseline for the page's workload set, range for direct-range latency coverage, and full for the complete profile. Generated fixtures and raw reports stay under the ignored benchmark artifact directory; the page's JSON snapshot is the reviewable public surface.