Lowest geometric-mean relative latency for the small-table group, narrowly ahead of Symfony Routing.
Router performance changes with the workload.
Seven PHP routing libraries, one deterministic dataset, equivalent handlers, explicit unsupported features, and raw results anyone can inspect or reproduce.
Different table sizes, different leaders
Full dispatch includes parameter extraction and equivalent handler invocation. Requests per second are single-process routing-operation estimates, not HTTP server throughput.
Lowest geometric-mean relative latency for the heavy-table group, followed by Symfony Routing.
Lowest geometric-mean relative latency across 10, 100, 1,000 and 10,000 routes for this scenario only.
| Routes | Lowest mean time | Mean ns/op | Estimated requests/s |
|---|---|---|---|
| 10 | FastRoute | 1,772.4 | 564,193 |
| 100 | Symfony Routing | 2,180.9 | 458,529 |
| 1,000 | Symfony Routing | 2,508.0 | 398,724 |
| 10,000 | Ariel Radix Router | 2,543.6 | 393,150 |
Cache, lifecycle, and memory tell different stories
Lowest four-size aggregate among routers with a documented compiled-cache lifecycle.
Lowest four-size aggregate after native cache loading and first dispatch.
Lowest isolated-process peak for the two small route-table sizes.
Lowest isolated-process peak for the two larger route-table sizes.
Correctness before performance
Conflict-of-interest disclosure: the benchmark author also maintains Ariel Radix Router. Shared datasets, contract tests, raw exports, exact package commits, and reproducible commands are provided so readers can audit both methodology and implementation.