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
- 15m 49s
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.2.0 · @main: Monty 1.2.0 · Python 3.15: CPython 3.15.0 · PyPy 8.0.0
Runtimes and build details
monty · monty · 1.2.0
/home/runner/work/flying-circus/flying-circus/_runtimes/monty/bin/monty
Prebuilt PyPI wheel: pydantic-monty-runtime==1.2.0; source revision and compiler flags unverifiedd36ff64238568cd0fa6e152f5359512b7cd78acc000a0659fe1823ebf54b85b5
monty-main · monty · 9020a069a3eac8af1de7a3179373adb6ce24776d
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@9020a069a3eac8af1de7a3179373adb6ce24776d; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)7c4cf3be92eefbe1191bdf518d0a296d0d4107ca40b691495aee71e498c72bd4
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.71 | 1.62 | 11.6 | 22.2 |
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 | 544 / 544 | 451 / 447 | 132 / 110 | 15.2 / 15.3 |
| portfolio_risk | 128 / 127 | 127 / 127 | 77.2 / 68.4 | 10.6 / 11.8 |
| game_spectral_norm | 615 / 614 | 490 / 490 | 122 / 106 | 18.0 / 18.5 |
| game_fannkuch | 1840 / 1840 | 1760 / 1780 | 387 / 352 | 77.4 / 77.8 |
| capacity_planning | 66.3 / 64.7 | 55.6 / 53.8 | 15.8 / 13.2 | 3.58 / 3.71 |
| expense_report | 0.37 / 0.30 | 0.44 / 0.32 | 1.48 / 0.43 | 0.34 / 0.47 |
| perf_float | 335 / 300 | 419 / 364 | 84.4 / 77.5 | 20.3 / 19.1 |
| api_report | 0.73 / 0.39 | 0.81 / 0.43 | 1.52 / 0.53 | 0.38 / 0.54 |
| order_cleanup | 0.41 / 0.33 | 0.49 / 0.39 | 1.51 / 0.54 | 0.39 / 0.53 |
| perf_json_loads | 1.37 / 0.95 | 1.52 / 1.11 | 2.84 / 1.66 | 0.98 / 1.16 |
| game_regex_dna | failed / failed | failed / failed | 290 / 272 | 180 / 131 |
| perf_barnes_hut | 5210 / 5260 | 5860 / 5880 | 995 / 978 | 544 / 500 |
| memory_string_list_short | 262 / 218 | 265 / 219 | 136 / 119 | 73.0 / 79.2 |
| memory_customer_records | 537 / 436 | 525 / 427 | 212 / 212 | 172 / 116 |
| stdout_lines | 3.25 / 2.87 | 3.10 / 3.20 | 5.57 / 3.66 | 5.09 / 3.88 |
| text_csv_aggregate_medium | 493 / 480 | 544 / 527 | 106 / 102 | 80.8 / 64.0 |
| memory_string_index_short | 127 / 109 | 135 / 116 | 92.3 / 87.2 | 93.4 / 58.5 |
| text_json_lines_medium | 15.9 / 15.7 | 18.1 / 17.8 | 21.5 / 20.3 | 14.8 / 15.7 |
| perf_json_dumps | 11.7 / 9.36 | 14.1 / 11.7 | 14.8 / 13.1 | 17.9 / 15.8 |
| text_json_parse_medium | 13.3 / 9.81 | 15.0 / 11.3 | 12.2 / 10.6 | 8.79 / 8.49 |
| game_meteor_contest | 434 / 434 | 458 / 460 | 99.1 / 92.8 | 72.3 / 71.0 |
| memory_string_list_long | 365 / 304 | 359 / 292 | 144 / 128 | 106 / 100 |
| text_csv_cleanup_medium | 970 / 964 | 1050 / 1050 | 202 / 202 | 156 / 154 |
| text_json_lines_small | 0.81 / 0.50 | 0.84 / 0.53 | 0.63 / 0.66 | 0.58 / 0.62 |
| text_json_transform_small | 0.77 / 0.43 | 0.83 / 0.46 | 0.54 / 0.55 | 0.42 / 0.54 |
| text_json_parse_small | 0.66 / 0.35 | 0.70 / 0.37 | 0.37 / 0.39 | 0.29 / 0.41 |
| game_pidigits | n/a | n/a | 171 / 170 | 152 / 154 |
| text_line_logs_small | 0.45 / 0.42 | 0.49 / 0.44 | 0.43 / 0.46 | 0.47 / 0.51 |
| memory_string_index_long | 185 / 157 | 192 / 155 | 102 / 95.5 | 105 / 89.0 |
| text_json_transform_medium | 15.7 / 12.0 | 17.4 / 13.7 | 13.2 / 11.6 | 13.2 / 12.7 |
| text_regex_logs_medium | 29.3 / 28.0 | 31.8 / 30.7 | 18.4 / 16.9 | 22.2 / 17.8 |
| text_line_logs_medium | 19.3 / 19.1 | 19.0 / 18.5 | 10.5 / 9.30 | 14.0 / 13.8 |
| ticket_search | 31.8 / 30.7 | 31.5 / 30.4 | 11.8 / 9.50 | 16.0 / 16.0 |
| text_regex_logs_small | 1.21 / 0.78 | 1.29 / 0.82 | 0.72 / 0.57 | 2.08 / 0.91 |
| perf_unpack_sequence | 128 / 127 | 88.0 / 86.6 | 20.7 / 19.7 | 47.1 / 49.0 |
| text_csv_aggregate_small | 5.27 / 5.04 | 5.77 / 5.54 | 2.04 / 1.98 | 6.39 / 6.66 |
| text_csv_cleanup_small | 9.72 / 9.43 | 10.7 / 10.3 | 3.15 / 3.01 | 11.4 / 12.2 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)