Performance baselines
These are the steady-state numbers for the current release (2026.05.05.12), measured against the IBM Informix Developer Edition Docker container on loopback.
Codec micro-benchmarks
Section titled “Codec micro-benchmarks”| Operation | Mean | Throughput |
|---|---|---|
decode(int) per cell | 139 ns | 7.2M ops/sec |
decode(varchar) per cell | 280 ns | 3.6M ops/sec |
decode(decimal) per cell | 410 ns | 2.4M ops/sec |
parse_tuple_payload per row (5 cols) | 1.4 µs | 715K rows/sec |
End-to-end
Section titled “End-to-end”| Operation | Mean | Throughput |
|---|---|---|
SELECT 1 round-trip | ~140 µs | ~7K queries/sec |
| 1000-row SELECT | ~1.0 ms | ~990K rows/sec sustained |
executemany(1000) in transaction | 32 ms | ~31,000 rows/sec |
| Pool acquire + query + release | 295 µs | ~3.4K queries/sec |
| Cold connect (login handshake) | 11 ms | ~90 connections/sec |
vs IfxPy 3.0.5
Section titled “vs IfxPy 3.0.5”| Benchmark | IfxPy | informix-driver | Result |
|---|---|---|---|
| Single-row SELECT round-trip | 118 µs | 114 µs | comparable |
| ~10-row server-side query | 130 µs | 159 µs | IfxPy 22% faster |
| Cold connect | 11.0 ms | 10.5 ms | comparable |
executemany(1k) | 23.5 ms | 23.2 ms | tied |
executemany(10k) | 259 ms | 161 ms | informix-driver 1.6× faster |
executemany(100k) | 2376 ms | 1487 ms | informix-driver 1.6× faster |
SELECT 1k | 1.34 ms | 1.72 ms | IfxPy 1.28× |
SELECT 10k | 11.7 ms | 16.1 ms | IfxPy 1.07× |
SELECT 100k | 116 ms | 169 ms | IfxPy 1.15× |
For the methodology, IQR caveats, and reproduction instructions, see Compared to IfxPy.
Phase progression on bulk SELECT
Section titled “Phase progression on bulk SELECT”| Phase | 100k-row SELECT | Ratio vs IfxPy |
|---|---|---|
| Phase 36 | 280 ms | 2.40× slower |
| Phase 37 (per-column readers) | 250 ms | 2.10× slower |
| Phase 38 (codegen-inlined decoders) | 237 ms | 2.04× slower |
| Phase 39 (connection-scoped buffered reader) | 169 ms | 1.15× slower |
The Phase 39 jump is documented in The buffered reader.
Reproducing
Section titled “Reproducing”git clone https://git.supported.systems/warehack.ing/informix-dbcd informix-dbmake ifx-up # starts the dev containermake bench # runs all benchmarksmake compare # head-to-head vs IfxPy (handles IfxPy's install gauntlet)For just the bulk-fetch progression:
pytest -m benchmark tests/benchmarks/test_select_scaling.py