Application benchmarks
- CPU
- AMD EPYC 9V74 80-Core Processor · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 19m 1s
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 · 07419285903bd6f929e779d2eb3b85eea902448f
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@07419285903bd6f929e779d2eb3b85eea902448f; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)e1ed9334115b786093d08b57587908ae07f74da9f0c6acc409d0e028e31da7cd
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.89 | 1.76 | 14.4 | 25.9 |
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 | 834 / 835 | 554 / 555 | 167 / 144 | 19.5 / 19.5 |
| portfolio_risk | 154 / 154 | 147 / 147 | 97.1 / 87.7 | 13.5 / 14.4 |
| game_spectral_norm | 778 / 780 | 611 / 613 | 160 / 136 | 22.6 / 22.4 |
| game_fannkuch | n/a | 2320 / 2330 | 482 / 455 | 96.9 / 97.3 |
| capacity_planning | 86.2 / 84.2 | 72.9 / 70.8 | 21.3 / 16.8 | 4.51 / 4.66 |
| expense_report | 0.43 / 0.31 | 0.50 / 0.34 | 1.85 / 0.54 | 0.40 / 0.53 |
| api_report | 0.85 / 0.43 | 0.94 / 0.45 | 1.90 / 0.60 | 0.45 / 0.62 |
| order_cleanup | 0.50 / 0.35 | 0.58 / 0.42 | 1.95 / 0.61 | 0.48 / 0.63 |
| perf_float | 406 / 360 | 505 / 457 | 102 / 94.5 | 25.6 / 23.8 |
| perf_json_loads | 1.68 / 1.13 | 1.93 / 1.38 | 3.53 / 2.05 | 1.23 / 1.46 |
| perf_barnes_hut | 7370 / 7360 | 7450 / 7470 | 1360 / 1240 | 698 / 573 |
| game_regex_dna | n/a | failed / failed | 366 / 350 | 227 / 168 |
| stdout_lines | 3.61 / 3.70 | 3.96 / 3.96 | 7.19 / 4.54 | 6.46 / 4.81 |
| memory_string_list_short | 341 / 285 | 328 / 283 | 168 / 150 | 92.5 / 99.1 |
| memory_customer_records | 675 / 605 | 642 / 577 | 269 / 253 | 210 / 140 |
| text_csv_aggregate_medium | 639 / 615 | 675 / 647 | 139 / 131 | 99.4 / 77.6 |
| text_json_lines_medium | 21.2 / 20.3 | 23.8 / 23.1 | 27.2 / 25.6 | 18.5 / 18.4 |
| text_json_parse_medium | 16.3 / 11.4 | 19.4 / 14.5 | 15.4 / 12.8 | 10.7 / 10.1 |
| perf_json_dumps | 14.7 / 11.7 | 17.7 / 14.6 | 19.1 / 16.5 | 23.0 / 18.8 |
| text_json_lines_small | 0.97 / 0.56 | 1.06 / 0.65 | 0.81 / 0.80 | 0.72 / 0.76 |
| memory_string_index_short | 163 / 131 | 165 / 131 | 110 / 94.9 | 114 / 67.7 |
| memory_string_list_long | 472 / 413 | 448 / 383 | 179 / 161 | 128 / 132 |
| game_meteor_contest | n/a | 586 / 590 | 127 / 119 | 92.8 / 90.7 |
| text_json_transform_small | 0.94 / 0.51 | 1.00 / 0.57 | 0.70 / 0.69 | 0.52 / 0.64 |
| text_csv_cleanup_medium | 1250 / 1220 | 1320 / 1300 | 256 / 249 | 194 / 188 |
| text_json_parse_small | 0.77 / 0.39 | 0.85 / 0.46 | 0.47 / 0.47 | 0.37 / 0.48 |
| game_pidigits | n/a | n/a | 221 / 219 | 195 / 194 |
| text_line_logs_small | 0.59 / 0.54 | 0.60 / 0.56 | 0.54 / 0.58 | 0.60 / 0.64 |
| text_json_transform_medium | 19.7 / 14.7 | 22.6 / 17.6 | 16.9 / 14.1 | 15.8 / 15.3 |
| memory_string_index_long | 235 / 192 | 227 / 181 | 124 / 108 | 129 / 107 |
| text_regex_logs_medium | 38.7 / 37.4 | 38.7 / 37.3 | 23.4 / 21.0 | 28.2 / 21.9 |
| text_regex_logs_small | 1.50 / 0.95 | 1.57 / 1.02 | 0.91 / 0.71 | 2.64 / 0.95 |
| text_line_logs_medium | 27.6 / 27.0 | 24.6 / 24.1 | 13.2 / 11.8 | 17.6 / 16.3 |
| ticket_search | 44.2 / 42.1 | 39.9 / 37.7 | 15.1 / 11.5 | 20.4 / 19.5 |
| perf_unpack_sequence | 361 / 363 | 112 / 112 | 26.6 / 24.6 | 60.3 / 58.9 |
| text_csv_aggregate_small | 6.93 / 6.55 | 7.31 / 6.92 | 2.62 / 2.49 | 8.21 / 8.18 |
| text_csv_cleanup_small | 12.7 / 12.2 | 13.5 / 13.1 | 4.01 / 3.80 | 14.6 / 14.9 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)