Skip to content

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.

OperationMeanThroughput
decode(int) per cell139 ns7.2M ops/sec
decode(varchar) per cell280 ns3.6M ops/sec
decode(decimal) per cell410 ns2.4M ops/sec
parse_tuple_payload per row (5 cols)1.4 µs715K rows/sec
OperationMeanThroughput
SELECT 1 round-trip~140 µs~7K queries/sec
1000-row SELECT~1.0 ms~990K rows/sec sustained
executemany(1000) in transaction32 ms~31,000 rows/sec
Pool acquire + query + release295 µs~3.4K queries/sec
Cold connect (login handshake)11 ms~90 connections/sec
BenchmarkIfxPyinformix-driverResult
Single-row SELECT round-trip118 µs114 µscomparable
~10-row server-side query130 µs159 µsIfxPy 22% faster
Cold connect11.0 ms10.5 mscomparable
executemany(1k)23.5 ms23.2 mstied
executemany(10k)259 ms161 msinformix-driver 1.6× faster
executemany(100k)2376 ms1487 msinformix-driver 1.6× faster
SELECT 1k1.34 ms1.72 msIfxPy 1.28×
SELECT 10k11.7 ms16.1 msIfxPy 1.07×
SELECT 100k116 ms169 msIfxPy 1.15×

For the methodology, IQR caveats, and reproduction instructions, see Compared to IfxPy.

Phase100k-row SELECTRatio vs IfxPy
Phase 36280 ms2.40× slower
Phase 37 (per-column readers)250 ms2.10× slower
Phase 38 (codegen-inlined decoders)237 ms2.04× slower
Phase 39 (connection-scoped buffered reader)169 ms1.15× slower

The Phase 39 jump is documented in The buffered reader.

Terminal window
git clone https://git.supported.systems/warehack.ing/informix-db
cd informix-db
make ifx-up # starts the dev container
make bench # runs all benchmarks
make compare # head-to-head vs IfxPy (handles IfxPy's install gauntlet)

For just the bulk-fetch progression:

Terminal window
pytest -m benchmark tests/benchmarks/test_select_scaling.py