Application benchmarks
- CPU
- Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 14m 47s
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 · 3c91e83cde78240b410bbbd30bfd877f1a4c07f0
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@3c91e83cde78240b410bbbd30bfd877f1a4c07f0; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.0 (b940084d7 2026-09-28)c118a07be91b6e0c510e06212fa0cdc3d49841545d55a574d55beff35417ed1d
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.56 | 1.56 | 12.4 | 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 | 569 / 566 | 567 / 570 | 125 / 123 | 23.1 / 18.6 |
| portfolio_risk | 99.6 / 99.5 | 86.2 / 85.7 | 87.6 / 86.6 | 18.8 / 14.9 |
| game_fannkuch | n/a | n/a | 442 / 443 | 94.6 / 93.3 |
| game_spectral_norm | 497 / 499 | 451 / 452 | 119 / 118 | 28.5 / 25.6 |
| expense_report | 0.39 / 0.31 | 0.45 / 0.33 | 1.79 / 0.51 | 0.45 / 0.51 |
| perf_float | 340 / 321 | 411 / 369 | 89.5 / 87.6 | 26.4 / 22.7 |
| order_cleanup | 0.47 / 0.35 | 0.52 / 0.41 | 1.80 / 0.58 | 0.51 / 0.62 |
| api_report | 0.76 / 0.48 | 0.83 / 0.49 | 1.86 / 0.58 | 0.51 / 0.58 |
| capacity_planning | 54.0 / 52.3 | 51.4 / 49.8 | 16.1 / 14.2 | 4.45 / 4.15 |
| perf_json_loads | 1.59 / 1.25 | 1.69 / 1.40 | 3.29 / 2.00 | 1.29 / 1.41 |
| text_json_parse_medium | 13.5 / 11.6 | 14.9 / 12.9 | 15.5 / 14.5 | 6.77 / 7.90 |
| stdout_lines | 3.19 / 3.29 | 3.63 / 3.68 | 6.50 / 4.80 | 6.14 / 4.61 |
| memory_customer_records | 483 / 450 | 490 / 432 | 281 / 287 | 150 / 161 |
| perf_barnes_hut | 5320 / 5350 | 5740 / 5770 | 1060 / 1060 | 580 / 648 |
| game_regex_dna | n/a | failed / failed | 314 / 309 | 235 / 172 |
| memory_string_list_short | 283 / 257 | 268 / 238 | 161 / 151 | 97.1 / 148 |
| memory_string_list_long | 381 / 358 | 367 / 330 | 172 / 163 | 114 / 197 |
| text_json_transform_medium | 17.0 / 14.9 | 18.5 / 16.2 | 16.8 / 16.2 | 11.3 / 12.0 |
| perf_json_dumps | 13.0 / 12.0 | 14.8 / 13.1 | 18.6 / 17.0 | 26.4 / 18.3 |
| text_json_lines_medium | 18.5 / 17.9 | 20.4 / 20.2 | 26.3 / 25.2 | 19.2 / 19.6 |
| text_csv_aggregate_medium | 518 / 510 | 546 / 537 | 123 / 119 | 94.3 / 87.0 |
| game_meteor_contest | n/a | failed / failed | 119 / 117 | 100 / 93.2 |
| text_json_lines_small | 0.88 / 0.62 | 0.96 / 0.70 | 0.75 / 0.77 | 1.00 / 0.79 |
| memory_string_index_short | 151 / 140 | 158 / 136 | 130 / 122 | 118 / 105 |
| text_line_logs_small | 0.51 / 0.48 | 0.58 / 0.52 | 0.52 / 0.54 | 0.91 / 0.67 |
| text_json_transform_small | 0.84 / 0.61 | 0.90 / 0.61 | 0.64 / 0.66 | 0.81 / 0.64 |
| text_csv_cleanup_medium | 1030 / 1010 | 1080 / 1060 | 231 / 229 | 217 / 211 |
| game_pidigits | n/a | n/a | 204 / 204 | 194 / 189 |
| memory_string_index_long | 202 / 185 | 218 / 186 | 142 / 133 | 138 / 126 |
| text_json_parse_small | 0.72 / 0.48 | 0.76 / 0.50 | 0.45 / 0.47 | 0.64 / 0.54 |
| text_regex_logs_medium | 33.8 / 33.0 | 35.4 / 34.4 | 24.2 / 22.9 | 31.0 / 25.3 |
| text_line_logs_medium | 22.0 / 22.5 | 23.2 / 23.1 | 13.9 / 12.7 | 16.9 / 16.9 |
| text_regex_logs_small | 1.35 / 0.97 | 1.34 / 0.99 | 0.86 / 0.71 | 2.42 / 1.02 |
| ticket_search | 35.1 / 33.7 | 35.9 / 34.6 | 13.9 / 10.9 | 24.2 / 21.9 |
| text_csv_aggregate_small | 5.57 / 5.34 | 5.89 / 5.70 | 2.30 / 2.27 | 8.58 / 8.01 |
| perf_unpack_sequence | 332 / 334 | 355 / 363 | 24.3 / 22.2 | 58.0 / 52.7 |
| text_csv_cleanup_small | 10.3 / 9.99 | 10.8 / 10.6 | 3.36 / 3.33 | 19.4 / 14.6 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)