Generated by perf_tests/report.py. Provenance: host benchmark node (Linux x86_64, 32 CPUs) |
commit e785e1c+dirty | v3: company_dns:09272026-1 | lean: company-dns-v4:amd64-lean | small: company-dns-v4:amd64-small | run 2026-10-10T21:40 |

Counts are for V4 lean against V3 over every route and condition (cold and warm, each resource regime). Medians over 3 runs per cell.

Each route restarted from nothing before its first request (empty caches); 10 companies per route. Bars are the median over 3 runs, whiskers the lowest and highest run, diamonds the p95; the number is the median in ms. Lower is better.

production limits: 0.5 CPU, 1g. The warm pass repeats the same 10 companies on the same running container. This chart measures the caches, not the code: read it with the cold chart. Medians over 3 runs.

A batch is N requests sent at the same moment; its wall time is the slowest one. Lines are medians over 3 runs, shaded bands the lowest and highest run. Lower is better. Ratios in the title are geometric means of V3 wall time over V4’s at the highest level every image was measured at. V4’s caches are warm here (the batches follow the warm pass), so on the upstream routes V4 answers from memory and V3 does the full work every time.

Higher throughput is better; CPU is what the container drew, with the limit marked. Medians over 3 runs.

Each route restarted from nothing before its first request (empty caches); 10 companies per route. Bars are the median over 3 runs, whiskers the lowest and highest run, diamonds the p95; the number is the median in ms. Lower is better.

headroom: 16 CPU, 64g. The warm pass repeats the same 10 companies on the same running container. This chart measures the caches, not the code: read it with the cold chart. Medians over 3 runs.

A batch is N requests sent at the same moment; its wall time is the slowest one. Lines are medians over 3 runs, shaded bands the lowest and highest run. Lower is better. Ratios in the title are geometric means of V3 wall time over V4’s at the highest level every image was measured at. V4’s caches are warm here (the batches follow the warm pass), so on the upstream routes V4 answers from memory and V3 does the full work every time.

Higher throughput is better; CPU is what the container drew, with the limit marked. Medians over 3 runs.

Image sizes as Docker reports them (V3 1119 MB, V4 lean 528 MB, V4 small 456 MB); memory and start time at the production limits: 0.5 CPU, 1g. Smaller is better.

All cold, warm and concurrent calls of all runs; counts inside the bars. ‘No answer’ is a timeout or connection error (the request timeout is in the manifest); ‘other status’ is any answer that is neither 200 nor an expected 404 (for example a 500); ‘wrong or incomplete’ is a 200 whose answer lacked the company’s CIK, found by the check in the concurrency pass (levels 1 to 16).

MEASURED = isolated with a before-and-after on the same work; OBSERVED = seen in the matrix but not isolated (for example ‘health’ shows the framework overhead, not its share of every gain).

Everything V4 answers differently on purpose. A difference that is not on this list is a defect.
f1-route-coverage: needs specs/v3-openapi.json and specs/v4-openapi.json (run_matrix.py –extras)f2-parity: needs parity/f4-tests: needs suite/f5-what-v4-adds: needs specs/v3-openapi.json and specs/v4-openapi.json (run_matrix.py –extras)