Application benchmarks
- CPU
- INTEL(R) XEON(R) PLATINUM 8573C · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 11m 46s
Measurement details
- Repeated warmups
- 3
- Timing
- Median ms · one-shot / repeated · startup excluded
- RSS
- Median MiB · separate one-shot processes including startup
- Startup
- Empty -c command · launch through exit · normal defaults
- Sort
- Percentage advantage vs chart reference · largest improvement first; click headers to reorder
Monty 1.1.0 · @main: Monty 1.1.0 · Python 3.15: CPython 3.15.0 · PyPy 8.0.0
Runtimes and build details
monty · monty · 1.1.0
/home/runner/work/flying-circus/flying-circus/_runtimes/monty/bin/monty
Prebuilt PyPI wheel: pydantic-monty-runtime==1.1.0; source revision and compiler flags unverifiedc9d19e7256886558c67678582d0d223de3eb05232f69da9da657ab9e090f3f35
monty-main · monty · 5e67aa85bdf3e026c046a92f6e94aa02fd94c0fb
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@5e67aa85bdf3e026c046a92f6e94aa02fd94c0fb; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.0 (b940084d7 2026-09-28)ba6b1a92f0098585713682f32b84ef5ce7356841679d74b7a7a61b8ec38414e8
python3.15 · cpython · Python 3.15.0
/opt/hostedtoolcache/Python/3.15.0/x64/bin/python3.15
Source revision and compiler flags unverifiedfd580ad81787ecc7e71f91543dbe52ffccd3e5c4cf286565eceb539081e85992
pypy · pypy · Python 3.11.16 (78565394c9b5, Sep 18 2026, 08:00:14)
[PyPy 8.0.0 with GCC 14.2.1 20250110 (Red Hat 14.2.1-11)]
/opt/hostedtoolcache/PyPy/3.11.16/x64/bin/pypy3.11
Source revision and compiler flags unverified7aebd6513a8f1dc8529abecf80d25b66951ddb5e9bab14b2750a7dab7947a94d
Process startup · ms
| Monty | @main | Python 3.15 | PyPy |
|---|---|---|---|
| 1.05 | 1.03 | 9.57 | 13.1 |
Runtime · ms · one-shot / repeated
Bars: Python 3.15 = midpoint · blue above = faster, red below = slower · shared asinh scale (5% transition)
| Workload | Monty | @main | Python 3.15 | PyPy |
|---|---|---|---|---|
| game_nbody | 501 / 506 | 358 / 358 | 102 / 101 | 15.2 / 14.8 |
| portfolio_risk | 92.3 / 92.2 | 80.6 / 80.4 | 71.0 / 70.5 | 12.1 / 10.9 |
| perf_float | 294 / 277 | 316 / 285 | 72.9 / 71.5 | 15.1 / 13.7 |
| game_spectral_norm | 454 / 455 | 335 / 337 | 100 / 99.3 | 22.6 / 19.5 |
| game_fannkuch | n/a | n/a | 367 / 367 | 87.6 / 75.6 |
| expense_report | 0.36 / 0.32 | 0.43 / 0.34 | 1.46 / 0.43 | 0.33 / 0.43 |
| api_report | 0.69 / 0.46 | 0.74 / 0.44 | 1.52 / 0.54 | 0.39 / 0.51 |
| order_cleanup | 0.43 / 0.31 | 0.50 / 0.38 | 1.50 / 0.51 | 0.40 / 0.56 |
| capacity_planning | 49.3 / 48.1 | 47.0 / 45.8 | 13.4 / 12.0 | 3.59 / 3.47 |
| perf_json_loads | 1.38 / 1.06 | 1.46 / 1.18 | 2.72 / 1.67 | 0.95 / 1.08 |
| perf_barnes_hut | 4710 / 4720 | 4460 / 4480 | 925 / 928 | 393 / 409 |
| text_json_parse_medium | 11.8 / 9.82 | 12.4 / 11.0 | 12.1 / 10.9 | 5.83 / 6.06 |
| stdout_lines | 2.98 / 2.95 | 2.78 / 3.18 | 5.46 / 3.86 | 4.85 / 4.08 |
| game_regex_dna | n/a | failed / failed | 275 / 270 | 208 / 158 |
| text_csv_aggregate_medium | 438 / 429 | 458 / 450 | 96.9 / 94.9 | 69.8 / 62.2 |
| memory_customer_records | 411 / 384 | 406 / 357 | 197 / 195 | 137 / 129 |
| memory_string_index_short | 113 / 106 | 114 / 105 | 87.4 / 79.6 | 76.8 / 54.3 |
| memory_string_list_short | 245 / 220 | 233 / 209 | 119 / 112 | 82.3 / 79.7 |
| memory_string_list_long | 321 / 297 | 314 / 286 | 128 / 122 | 91.9 / 105 |
| perf_json_dumps | 11.0 / 9.61 | 12.0 / 10.6 | 14.4 / 12.8 | 18.5 / 13.7 |
| text_json_transform_medium | 14.5 / 12.6 | 15.4 / 13.6 | 12.9 / 12.5 | 10.0 / 9.49 |
| text_json_lines_medium | 15.4 / 15.0 | 16.3 / 16.1 | 19.7 / 19.2 | 16.0 / 15.0 |
| text_json_lines_small | 0.75 / 0.54 | 0.82 / 0.63 | 0.61 / 0.64 | 0.78 / 0.68 |
| game_pidigits | n/a | n/a | 178 / 179 | 158 / 156 |
| game_meteor_contest | n/a | failed / failed | 104 / 102 | 94.1 / 91.1 |
| text_json_transform_small | 0.71 / 0.49 | 0.81 / 0.55 | 0.53 / 0.54 | 0.65 / 0.55 |
| memory_string_index_long | 154 / 140 | 165 / 144 | 95.5 / 89.5 | 87.8 / 85.3 |
| text_csv_cleanup_medium | 857 / 843 | 896 / 885 | 182 / 179 | 173 / 166 |
| text_line_logs_small | 0.47 / 0.43 | 0.46 / 0.43 | 0.44 / 0.46 | 0.70 / 0.59 |
| text_json_parse_small | 0.62 / 0.42 | 0.62 / 0.40 | 0.38 / 0.37 | 0.52 / 0.42 |
| text_regex_logs_medium | 26.9 / 25.9 | 25.7 / 24.7 | 18.0 / 17.6 | 34.9 / 23.9 |
| text_line_logs_medium | 18.1 / 17.9 | 16.0 / 15.7 | 10.1 / 9.22 | 14.6 / 12.8 |
| text_regex_logs_small | 1.16 / 0.86 | 1.16 / 0.85 | 0.70 / 0.58 | 1.87 / 0.89 |
| ticket_search | 29.6 / 28.8 | 26.0 / 24.8 | 11.0 / 8.80 | 17.3 / 16.3 |
| perf_unpack_sequence | 286 / 294 | 83.3 / 82.6 | 19.9 / 17.9 | 49.3 / 45.1 |
| text_csv_aggregate_small | 4.94 / 4.73 | 5.09 / 4.89 | 1.87 / 1.88 | 6.87 / 6.67 |
| text_csv_cleanup_small | 9.01 / 8.70 | 9.42 / 9.17 | 2.78 / 2.75 | 12.4 / 12.3 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)