Application benchmarks
- CPU
- INTEL(R) XEON(R) PLATINUM 8573C · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 16m 34s
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.3.0 · @main: Monty 1.4.0 · Python 3.15: CPython 3.15.1 · PyPy 8.0.0
Runtimes and build details
monty · monty · 1.3.0
/home/runner/work/flying-circus/flying-circus/_runtimes/monty/bin/monty
Prebuilt PyPI wheel: pydantic-monty-runtime==1.3.0; source revision and compiler flags unverified4fdda193d2e9d21a9656c2a6fa428715d51c69a3755aed5b5a72177aeffec4a7
monty-main · monty · ebdccb09ab3fbd0cbc39382f501c67fea62e7541
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@ebdccb09ab3fbd0cbc39382f501c67fea62e7541; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)5b29b70816fc9f28b650989d6cbcccd0f21022e109c59a66b3a48b19e8ecc992
python3.15 · cpython · Python 3.15.1
/opt/hostedtoolcache/Python/3.15.1/x64/bin/python3.15
Source revision and compiler flags unverified3359482397c7a8e9b84606a9d825c3b4e2c2b89ff622d8ddb9a84e939699180a
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.52 | 1.54 | 12.2 | 20.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 | 483 / 482 | 473 / 472 | 117 / 115 | 17.9 / 17.6 |
| portfolio_risk | 116 / 116 | 115 / 114 | 84.1 / 83.4 | 14.2 / 14.3 |
| perf_float | 370 / 343 | 410 / 368 | 87.9 / 84.1 | 17.9 / 15.7 |
| game_spectral_norm | 498 / 496 | 477 / 476 | 118 / 116 | 26.5 / 22.9 |
| game_fannkuch | 1850 / 1840 | 1910 / 1890 | 429 / 429 | 104 / 90.1 |
| expense_report | 0.45 / 0.36 | 0.48 / 0.36 | 1.79 / 0.52 | 0.41 / 0.54 |
| api_report | 0.85 / 0.54 | 0.94 / 0.52 | 1.80 / 0.59 | 0.47 / 0.60 |
| capacity_planning | 62.0 / 60.7 | 59.7 / 58.2 | 16.1 / 14.4 | 4.25 / 4.20 |
| order_cleanup | 0.52 / 0.37 | 0.57 / 0.46 | 1.83 / 0.60 | 0.48 / 0.63 |
| perf_json_loads | 1.67 / 1.33 | 1.78 / 1.38 | 3.33 / 1.98 | 1.17 / 1.31 |
| text_json_parse_medium | 14.6 / 12.1 | 15.5 / 12.9 | 14.3 / 12.8 | 7.06 / 7.34 |
| perf_barnes_hut | 5370 / 5360 | 5820 / 5790 | 1100 / 1090 | 596 / 589 |
| stdout_lines | 3.59 / 3.33 | 3.63 / 3.03 | 6.38 / 4.52 | 5.63 / 4.68 |
| game_regex_dna | failed / failed | failed / failed | 311 / 303 | 258 / 192 |
| memory_customer_records | 542 / 514 | 547 / 516 | 237 / 241 | 171 / 159 |
| memory_string_list_short | 302 / 273 | 294 / 262 | 138 / 130 | 97.4 / 89.8 |
| memory_string_list_long | 389 / 357 | 394 / 364 | 150 / 140 | 109 / 121 |
| text_csv_aggregate_medium | 553 / 540 | 573 / 561 | 117 / 113 | 90.5 / 84.5 |
| text_json_transform_medium | 17.4 / 14.8 | 18.4 / 15.5 | 15.7 / 14.3 | 12.1 / 11.4 |
| text_json_lines_medium | 18.2 / 17.8 | 19.4 / 19.1 | 23.4 / 22.6 | 18.9 / 18.2 |
| perf_json_dumps | 14.0 / 12.4 | 14.8 / 13.1 | 17.2 / 15.2 | 21.8 / 16.1 |
| game_meteor_contest | 449 / 447 | 480 / 480 | 122 / 119 | 113 / 98.2 |
| memory_string_index_short | 153 / 141 | 148 / 134 | 107 / 97.2 | 90.3 / 93.7 |
| memory_string_index_long | 202 / 183 | 206 / 184 | 116 / 108 | 103 / 105 |
| text_json_lines_small | 0.90 / 0.66 | 0.96 / 0.69 | 0.74 / 0.73 | 0.94 / 0.78 |
| text_line_logs_small | 0.51 / 0.48 | 0.53 / 0.50 | 0.52 / 0.50 | 0.82 / 0.64 |
| game_pidigits | n/a | n/a | 201 / 200 | 201 / 191 |
| text_csv_cleanup_medium | 1080 / 1060 | 1140 / 1120 | 218 / 213 | 240 / 215 |
| text_json_transform_small | 0.89 / 0.63 | 0.94 / 0.62 | 0.64 / 0.60 | 0.77 / 0.66 |
| text_json_parse_small | 0.75 / 0.49 | 0.79 / 0.51 | 0.45 / 0.43 | 0.62 / 0.52 |
| text_line_logs_medium | 19.8 / 19.1 | 19.4 / 19.0 | 11.8 / 10.9 | 17.3 / 15.4 |
| text_regex_logs_medium | 32.3 / 30.9 | 34.3 / 33.0 | 21.7 / 20.6 | 43.3 / 29.6 |
| text_regex_logs_small | 1.40 / 1.00 | 1.44 / 1.03 | 0.84 / 0.67 | 2.21 / 1.01 |
| ticket_search | 30.8 / 29.1 | 32.5 / 30.9 | 13.3 / 10.2 | 20.7 / 19.2 |
| perf_unpack_sequence | 148 / 147 | 101 / 100 | 22.7 / 20.3 | 57.7 / 53.4 |
| text_csv_aggregate_small | 6.13 / 5.77 | 6.23 / 5.94 | 2.26 / 2.23 | 8.15 / 7.86 |
| text_csv_cleanup_small | 11.1 / 10.9 | 11.6 / 11.3 | 3.34 / 3.23 | 14.7 / 14.4 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)