Application benchmarks
- CPU
- Intel(R) Xeon(R) 6973P-C · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 11m 43s
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 · 2bb9f08a3946bd4feb5893e1db9022d0292ea2f9
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@2bb9f08a3946bd4feb5893e1db9022d0292ea2f9; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)33ada88963bdf1d478e5f78d8658b52bb6b6500b95515ebd7398ef85206108ee
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.18 | 1.15 | 9.37 | 16.5 |
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 | 435 / 435 | 317 / 335 | 84.9 / 84.2 | 14.0 / 13.5 |
| portfolio_risk | 81.5 / 81.4 | 72.4 / 72.0 | 58.6 / 58.7 | 12.7 / 10.7 |
| perf_float | 271 / 255 | 284 / 266 | 65.9 / 62.4 | 15.2 / 13.6 |
| expense_report | 0.40 / 0.34 | 0.46 / 0.42 | 1.31 / 0.47 | 0.31 / 0.52 |
| game_fannkuch | n/a | 1400 / 1410 | 294 / 296 | 98.5 / 70.9 |
| game_spectral_norm | 396 / 402 | 304 / 304 | 81.0 / 80.8 | 23.3 / 20.3 |
| api_report | 0.75 / 0.54 | 0.84 / 0.54 | 1.38 / 0.55 | 0.37 / 0.65 |
| order_cleanup | 0.46 / 0.44 | 0.53 / 0.49 | 1.33 / 0.52 | 0.39 / 0.79 |
| capacity_planning | 43.6 / 42.8 | 42.7 / 41.5 | 11.1 / 10.1 | 3.37 / 3.60 |
| perf_json_loads | 1.36 / 1.12 | 1.47 / 1.16 | 2.41 / 1.59 | 0.88 / 1.21 |
| stdout_lines | 2.42 / 2.23 | 2.63 / 2.55 | 4.84 / 3.55 | 4.60 / 4.12 |
| text_json_parse_medium | 11.1 / 9.14 | 11.7 / 9.97 | 10.8 / 9.88 | 6.09 / 6.50 |
| perf_barnes_hut | 4140 / 4170 | 3980 / 4060 | 764 / 763 | 515 / 493 |
| memory_customer_records | 428 / 402 | 410 / 371 | 174 / 183 | 168 / 132 |
| memory_string_list_short | 223 / 200 | 204 / 179 | 103 / 97.1 | 75.6 / 77.0 |
| game_regex_dna | n/a | failed / failed | 231 / 225 | 224 / 166 |
| memory_string_list_long | 293 / 272 | 261 / 227 | 110 / 105 | 86.4 / 102 |
| perf_json_dumps | 9.77 / 8.52 | 10.9 / 9.72 | 12.3 / 10.8 | 17.2 / 12.1 |
| text_json_lines_medium | 13.3 / 13.1 | 14.3 / 14.7 | 16.8 / 16.2 | 15.3 / 14.3 |
| text_csv_aggregate_medium | 409 / 392 | 418 / 404 | 87.2 / 83.6 | 80.1 / 66.7 |
| memory_string_index_short | 110 / 97.3 | 109 / 103 | 81.1 / 70.5 | 79.2 / 58.0 |
| text_json_transform_medium | 13.6 / 11.4 | 14.4 / 12.2 | 11.8 / 11.0 | 10.0 / 9.17 |
| game_meteor_contest | n/a | 347 / 345 | 88.9 / 86.9 | 93.3 / 76.5 |
| memory_string_index_long | 151 / 122 | 142 / 119 | 88.8 / 80.7 | 89.3 / 75.1 |
| text_json_lines_small | 0.78 / 0.58 | 0.84 / 0.64 | 0.57 / 0.58 | 0.83 / 0.71 |
| text_line_logs_small | 0.46 / 0.44 | 0.46 / 0.47 | 0.41 / 0.42 | 0.73 / 0.58 |
| game_pidigits | n/a | n/a | 148 / 147 | 179 / 162 |
| text_json_parse_small | 0.63 / 0.51 | 0.68 / 0.51 | 0.36 / 0.45 | 0.55 / 0.50 |
| text_json_transform_small | 0.76 / 0.63 | 0.83 / 0.62 | 0.48 / 0.53 | 0.70 / 0.66 |
| text_csv_cleanup_medium | 784 / 773 | 821 / 813 | 162 / 161 | 228 / 195 |
| text_regex_logs_medium | 24.4 / 23.5 | 22.8 / 22.1 | 15.4 / 15.0 | 36.7 / 24.6 |
| text_line_logs_medium | 16.3 / 15.9 | 14.2 / 14.1 | 8.56 / 8.01 | 14.4 / 12.0 |
| text_regex_logs_small | 1.15 / 0.89 | 1.22 / 0.89 | 0.61 / 0.55 | 1.78 / 1.07 |
| ticket_search | 26.2 / 25.3 | 22.9 / 22.2 | 9.96 / 7.75 | 16.3 / 15.5 |
| text_csv_aggregate_small | 4.36 / 4.19 | 4.72 / 4.36 | 1.64 / 1.75 | 6.35 / 6.13 |
| perf_unpack_sequence | 246 / 249 | 71.2 / 69.7 | 17.3 / 15.4 | 46.4 / 40.5 |
| text_csv_cleanup_small | 7.92 / 7.87 | 8.24 / 8.22 | 2.40 / 2.51 | 11.4 / 11.3 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)