Runtime performance¶
Decision¶
Batch execution defaults to one worker. On the benchmark host, two and four workers were
slower than one worker for both the 0.1.1 baseline and version 0.2.0, while each
additional worker loaded another complete model graph. Explicit --workers remains
available for operators to benchmark on their own hardware.
This is a host-specific operational result, not a cross-platform performance guarantee.
The redistribution-safe machine record is
runtime-benchmark-20260815.json.
Method¶
The benchmark compared baseline commit
c80fb388fe1ccecd17f60f296a1ef31bd95a1ee3 with the 0.2.0 Python source tree.
It used all 28 real BSI conformance PNGs for single-process latency and a fixed 64-image
subsample of the licensed, locally installed CelebA original-wild JPEGs for batch scaling.
No image or per-image identity is redistributed.
Each scenario received one warm-up followed by three measured repetitions. Baseline and version 0.2.0 alternated first position by repetition. Every case required no concurrent OFIQ process, at least 64 GiB available memory, and no more than 8 percent host CPU over two seconds before launch. Peak RSS is the complete process tree sampled every 20 ms. The host had 24 physical / 32 logical x86-64 CPUs, 134,747,688,960 bytes of memory, and Python 3.11.14.
All six measured single-process runs produced the same scalar digest. Every batch case
wrote exactly 64 unique rows; both variants consistently identified the same one real
image as all-component FailureToAssess.
Single-process medians¶
| Metric | 0.1.1 baseline | Version 0.2.0 | Version change |
|---|---|---|---|
| Cold first assessment | 2.601 s | 2.693 s | +3.6% |
| Warm throughput | 2.004 images/s | 2.060 images/s | +2.8% |
| Warm median latency | 495.7 ms | 483.3 ms | -2.5% |
| Process wall time | 17.130 s | 17.062 s | -0.4% |
| Peak process-tree RSS | 1.467 GiB | 1.211 GiB | -17.5% |
The small cold-start regression is outweighed operationally by lower warm latency and a 275,165,184-byte reduction in median peak RSS, but applications dominated by one-shot assessment should measure their own initialization path.
Batch medians on 64 real images¶
| Variant | Workers | Throughput | Elapsed | Peak process-tree RSS |
|---|---|---|---|---|
| 0.1.1 baseline | 1 | 2.656 images/s | 24.101 s | 1.446 GiB |
| 0.1.1 baseline | 2 | 2.557 images/s | 25.026 s | 2.778 GiB |
| 0.1.1 baseline | 4 | 2.242 images/s | 28.551 s | 5.094 GiB |
| Version 0.2.0 | 1 | 2.649 images/s | 24.162 s | 1.292 GiB |
| Version 0.2.0 | 2 | 2.391 images/s | 26.765 s | 2.450 GiB |
| Version 0.2.0 | 4 | 2.140 images/s | 29.907 s | 4.723 GiB |
Relative to one worker, version 0.2.0 throughput fell 9.7 percent at two workers and 19.2 percent at four workers. These measurements support one worker as the default on this host. Operators can still select explicit concurrency after measuring the memory and throughput tradeoff on their own processor, runtime provider, and workload.