Application benchmarks
- CPU
- Intel(R) Xeon(R) 6973P-C · 4 logical CPUs
- OS
- Linux-7.0.0-1017-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 12m 40s
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.3.0 · Python 3.15: CPython 3.15.0 · PyPy 8.0.1
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 · 9ccbaffdd2cfd5839e0a0ff1248ab901de51eb4c
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@9ccbaffdd2cfd5839e0a0ff1248ab901de51eb4c; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)ea6a6ea2c4c42c7fda99d47a28dc9f2e97a6c98cc7c5f8b38aca33a379ecceae
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.17 (ec82f20141cf, Oct 13 2026, 15:02:27)
[PyPy 8.0.1 with GCC 14.2.1 20250110 (Red Hat 14.2.1-11)]
/opt/hostedtoolcache/PyPy/3.11.17/x64/bin/pypy3.11
Source revision and compiler flags unverified7aebd6513a8f1dc8529abecf80d25b66951ddb5e9bab14b2750a7dab7947a94d
Process startup · ms
| Monty | @main | Python 3.15 | PyPy |
|---|---|---|---|
| 1.06 | 1.01 | 8.44 | 14.0 |
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 | 356 / 346 | 341 / 341 | 83.0 / 82.3 | 15.8 / 12.9 |
| portfolio_risk | 83.9 / 83.7 | 82.4 / 82.5 | 57.1 / 57.5 | 16.8 / 11.7 |
| perf_float | 271 / 252 | 297 / 265 | 63.4 / 65.8 | 21.8 / 13.7 |
| game_spectral_norm | 361 / 361 | 345 / 345 | 79.1 / 79.8 | 30.6 / 19.2 |
| game_fannkuch | 1350 / 1370 | 1350 / 1400 | 295 / 292 | 148 / 74.4 |
| expense_report | 0.38 / 0.32 | 0.44 / 0.35 | 1.27 / 0.43 | 0.36 / 0.52 |
| order_cleanup | 0.42 / 0.33 | 0.50 / 0.43 | 1.32 / 0.51 | 0.44 / 0.65 |
| api_report | 0.72 / 0.50 | 0.80 / 0.50 | 1.31 / 0.49 | 0.43 / 0.55 |
| capacity_planning | 44.0 / 42.9 | 43.0 / 42.1 | 10.8 / 9.92 | 4.33 / 3.50 |
| perf_json_loads | 1.25 / 1.01 | 1.39 / 1.13 | 2.36 / 1.54 | 1.19 / 1.09 |
| stdout_lines | 2.40 / 2.47 | 2.63 / 2.51 | 4.71 / 3.59 | 4.99 / 3.81 |
| text_json_parse_medium | 11.0 / 9.01 | 11.5 / 9.25 | 10.7 / 9.64 | 7.25 / 6.32 |
| perf_barnes_hut | 3870 / 3910 | 4240 / 4270 | 748 / 749 | 550 / 494 |
| game_regex_dna | failed / failed | failed / failed | 225 / 221 | 267 / 161 |
| memory_customer_records | 398 / 372 | 422 / 356 | 171 / 173 | 214 / 131 |
| text_csv_aggregate_medium | 394 / 385 | 410 / 398 | 82.4 / 82.5 | 110 / 64.4 |
| perf_json_dumps | 9.81 / 8.61 | 10.9 / 9.82 | 11.8 / 10.7 | 21.3 / 12.9 |
| memory_string_list_short | 228 / 210 | 218 / 192 | 99.3 / 94.1 | 124 / 75.7 |
| text_json_lines_medium | 13.2 / 13.1 | 13.8 / 13.5 | 16.3 / 15.8 | 18.7 / 13.5 |
| memory_string_index_short | 104 / 94.2 | 105 / 91.3 | 77.5 / 68.7 | 95.8 / 57.9 |
| text_json_transform_medium | 13.3 / 11.1 | 13.4 / 11.6 | 11.4 / 10.9 | 12.4 / 9.76 |
| text_line_logs_small | 0.44 / 0.38 | 0.45 / 0.43 | 0.41 / 0.42 | 0.53 / 0.53 |
| text_json_parse_small | 0.64 / 0.42 | 0.67 / 0.47 | 0.34 / 0.36 | 0.33 / 0.47 |
| game_meteor_contest | 325 / 330 | 339 / 339 | 86.6 / 84.6 | 125 / 82.2 |
| text_json_transform_small | 0.74 / 0.54 | 0.82 / 0.55 | 0.47 / 0.50 | 0.48 / 0.61 |
| memory_string_list_long | 297 / 279 | 270 / 235 | 108 / 102 | 144 / 103 |
| text_json_lines_small | 0.79 / 0.57 | 0.83 / 0.64 | 0.55 / 0.56 | 0.65 / 0.64 |
| game_pidigits | n/a | n/a | 145 / 144 | 223 / 164 |
| text_csv_cleanup_medium | 770 / 759 | 826 / 792 | 155 / 152 | 251 / 188 |
| memory_string_index_long | 143 / 129 | 141 / 116 | 86.5 / 76.9 | 112 / 106 |
| text_line_logs_medium | 14.7 / 14.5 | 14.1 / 13.9 | 8.57 / 7.97 | 17.9 / 11.5 |
| text_regex_logs_medium | 23.4 / 22.9 | 24.0 / 23.5 | 15.2 / 14.4 | 54.6 / 24.8 |
| text_regex_logs_small | 1.14 / 0.83 | 1.13 / 0.81 | 0.61 / 0.51 | 1.85 / 0.84 |
| ticket_search | 23.0 / 22.1 | 23.5 / 22.8 | 9.70 / 8.58 | 20.0 / 15.2 |
| text_csv_aggregate_small | 4.33 / 4.19 | 4.98 / 4.38 | 1.61 / 1.61 | 7.44 / 5.92 |
| perf_unpack_sequence | 105 / 105 | 79.9 / 77.0 | 17.0 / 15.1 | 58.2 / 39.6 |
| text_csv_cleanup_small | 7.99 / 7.89 | 8.64 / 8.19 | 2.37 / 2.38 | 13.9 / 10.9 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)