Benchmarks from the engine room
Benchmarks are where fast software goes to acquire impressive adjectives. This page makes the numbers do most of the talking instead.
The swmmrs benchmark complements the feature-oriented regression suite with
large hydraulic models drawn from the sort of work a modeller encounters day
to day.
View the latest HTML benchmark report
What the benchmark measures
swmm-bench sends the same input models
through each SWMM-compatible engine. It records runtime, peak memory, reports,
and binary output. In the latest report, every engine and model pair gets three
interleaved runs. We report the median runtime so one unusually fast or slow
run does not dominate the result.
Two distance calculations measure result similarity:
- a cell-weighted relative-distance metric over parsed SWMM report tables.
- a composite metric over matching report-period time series in binary
.outfiles, weighted 75% toward typical values and 25% toward event behavior.
Lower distance means a closer result. The report keeps speed and similarity together for a reason. Arriving first is not useful if the solver lands in the wrong hydraulic system.
Latest result
The August 26, 2026 report puts EPA SWMM 5.2.4 (runswmm-07c371f) and
swmmrs 0.1.0 (runswmmrs-56ce94c) through twelve stress models:
| Model | EPA median | swmmrs median |
Runtime reduction | Report distance | Output distance |
|---|---|---|---|---|---|
10033-hydraulic.inp |
121 s | 58 s | 52.1% | 0.015429 | 0.001891 |
10860-nodes.inp |
76 s | 41 s | 46.1% | 0.001345 | 0.000763 |
126000-groundwater-lid.inp |
121 s | 117 s | 3.3% | 0.007016 | 0.000987 |
17100-dummy-links.inp |
150 s | 76 s | 49.3% | 0.008367 | 0.000775 |
4569-nodes.inp |
12 s | 9 s | 25.0% | 0.004949 | 0.000000 |
46-pumps.inp |
424 s | 243 s | 42.7% | 0.022239 | 0.028547 |
continuousmodelwq.inp |
31 s | 31 s | 0.0% | 0.011193 | 0.001562 |
ddc-24hr-100yr.inp |
11 s | 10 s | 9.1% | 0.009763 | 0.000991 |
fredericksburg.inp |
151 s | 119 s | 21.2% | 0.016904 | 0.000666 |
greenville-snowmelt.inp |
34 s | 23 s | 32.4% | 0.073754 | 0.034562 |
terreno.inp |
180 s | 66 s | 63.3% | 0.002057 | 0.000386 |
xpswmm-collapsingweir.inp |
11 s | 10 s | 9.1% | 0.003988 | 0.002532 |
All 72 measured executions returned safely. swmmrs was faster on eleven
models and tied EPA on one. Its mean per-model median runtime was 66.9 seconds,
compared with 110.2 seconds for EPA. That is a mean reduction of 29.5%.
Ten of the twelve binary-output distances are below 0.003. The two outliers,
46-pumps and greenville-snowmelt, are explained below.
This result has a passport. It belongs to these engine builds, models, hardware, operating system, compiler settings, and run conditions. It is not a universal ranking for every machine in this or any neighboring solar system.
Distance summarizes selected report and output values. It is evidence of similarity, not proof of complete numerical equivalence.
Why 46-pumps.inp remains different
Both engines have a difficult time with this model, which makes the difference more interesting and less useful as a verdict.
The published 30-day run gives this model a 0.022239 report distance and
0.028547 output distance. That run predates the exact relational-operator parser
fix in solver commit 8adbd42. Pumps initialized exactly at a DEPTH <=
shutoff threshold could therefore run briefly.
After the fix, a two-day diagnostic used a fixed 0.25-second routing step and
100 Dynamic Wave trials. The false startup at PMP1-222 and PMP2-222
disappeared. The pumping-summary distance fell to 0.000902, but the report and
output distances remained at 0.013373 and 0.012877.
Neither engine converged reliably in that diagnostic. EPA failed to converge on
26.86% of routing steps, and swmmrs failed on 31.02%. Their external outflow
and final stored volume agree to the report precision. The dominant
GM-824_38 flow stays below 0.7 GPM in both engines. The typical output
distance is 0.002631. Event timing raises the composite distance through its
0.043617 event component.
This model is a useful numerical-stability stress case. It is a poor parity oracle while both engines leave so many routing steps unconverged. The difference stays in the report because hiding an awkward result makes a prettier chart and a worse benchmark.
Why greenville-snowmelt.inp differs from EPA 5.2.4
The filename has done nothing wrong, but it does point suspicion in the wrong direction. The 0.073754 report distance and 0.034562 output distance are hydraulic, not a snowmelt discrepancy. Initial snow cover, precipitation, infiltration, and final snow cover match to the report precision. Surface runoff differs by 0.033 acre-ft, or 0.0104%.
The model connects STOR-10 to the FREE NW_CSO_OUTFALL through the ungated
ORI-33, which has a 30 ft offset. A known EPA 5.2.4 outfall
bug sets the
outfall depth to zero when the connected link has a nonzero offset. EPA's 5.3
fix and
swmmrs produce the 30 ft outfall depth instead.
That 30 ft fork in the timeline creates 7,388.745 million gallons of reverse boundary flow. It accounts for 99.99% of the 7,389.294-million-gallon increase in external inflow and drives the downstream flooding, pumping, and outflow differences. This is an expected EPA-version difference, not a snowmelt implementation mismatch.
Relationship to regression validation
One sensor cannot answer every question. The regression suite uses compact models to exercise a broad range of hydrology, hydraulics, controls, routing, water-quality, and interface behavior. The benchmarks use fewer, larger, and more interconnected models to represent realistic simulation scale and feature interaction. Together, they show both breadth across solver features and practical behavior on complex workloads.