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
- 20m 19s
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.3.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 · 9000dc6cfaffa34a652c5d8e33a55b7cee58c251
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@9000dc6cfaffa34a652c5d8e33a55b7cee58c251; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)4f56414d71fa71c58bd6694f793f83f38ff943f2d053aded5b7efa7c3a4534c1
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.86 | 1.75 | 14.2 | 24.7 |
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 | 694 / 693 | 586 / 582 | 155 / 142 | 19.3 / 19.3 |
| portfolio_risk | 152 / 152 | 146 / 145 | 91.9 / 87.7 | 13.6 / 14.1 |
| game_spectral_norm | 733 / 734 | 628 / 628 | 151 / 134 | 23.8 / 22.4 |
| game_fannkuch | 2430 / 2440 | 2310 / 2300 | 455 / 451 | 97.8 / 97.0 |
| capacity_planning | 81.2 / 79.5 | 71.0 / 68.8 | 20.8 / 17.3 | 4.47 / 4.59 |
| expense_report | 0.46 / 0.35 | 0.51 / 0.36 | 1.86 / 0.54 | 0.40 / 0.56 |
| api_report | 0.89 / 0.44 | 0.94 / 0.45 | 1.97 / 0.63 | 0.44 / 0.65 |
| perf_float | 444 / 396 | 534 / 461 | 102 / 95.1 | 25.4 / 22.8 |
| order_cleanup | 0.51 / 0.35 | 0.58 / 0.41 | 1.93 / 0.64 | 0.47 / 0.65 |
| perf_json_loads | 1.73 / 1.16 | 1.92 / 1.36 | 3.69 / 2.07 | 1.23 / 1.40 |
| perf_barnes_hut | 7180 / 7120 | 7440 / 7390 | 1290 / 1230 | 697 / 561 |
| game_regex_dna | failed / failed | failed / failed | 354 / 340 | 226 / 168 |
| stdout_lines | 3.98 / 3.94 | 4.02 / 4.07 | 7.12 / 4.62 | 6.40 / 4.67 |
| memory_string_list_short | 360 / 304 | 352 / 294 | 166 / 149 | 93.5 / 100 |
| memory_customer_records | 671 / 533 | 665 / 525 | 264 / 256 | 211 / 146 |
| text_csv_aggregate_medium | 757 / 728 | 680 / 653 | 141 / 131 | 98.9 / 76.9 |
| text_json_lines_medium | 20.5 / 19.4 | 23.1 / 22.2 | 27.4 / 25.7 | 18.5 / 18.2 |
| text_json_parse_medium | 16.6 / 11.7 | 18.7 / 13.7 | 15.3 / 12.5 | 10.7 / 10.0 |
| text_json_lines_small | 0.96 / 0.58 | 1.04 / 0.65 | 0.82 / 0.83 | 0.71 / 0.78 |
| memory_string_index_short | 178 / 142 | 159 / 124 | 109 / 93.6 | 111 / 68.3 |
| game_meteor_contest | 549 / 544 | 603 / 599 | 127 / 117 | 92.7 / 88.5 |
| memory_string_list_long | 493 / 411 | 474 / 392 | 174 / 161 | 129 / 129 |
| text_csv_cleanup_medium | 1460 / 1420 | 1340 / 1290 | 261 / 246 | 193 / 187 |
| text_json_transform_small | 0.93 / 0.53 | 1.00 / 0.55 | 0.69 / 0.68 | 0.52 / 0.65 |
| text_json_parse_small | 0.78 / 0.41 | 0.83 / 0.45 | 0.47 / 0.46 | 0.36 / 0.49 |
| perf_json_dumps | 16.4 / 13.2 | 18.1 / 14.9 | 19.1 / 16.4 | 22.8 / 18.6 |
| game_pidigits | n/a | n/a | 220 / 218 | 195 / 197 |
| text_line_logs_small | 0.55 / 0.50 | 0.60 / 0.56 | 0.55 / 0.56 | 0.59 / 0.63 |
| text_json_transform_medium | 19.7 / 14.6 | 21.9 / 16.7 | 16.7 / 13.9 | 15.9 / 15.2 |
| text_regex_logs_medium | 39.0 / 37.1 | 40.8 / 39.4 | 23.4 / 22.0 | 28.2 / 21.9 |
| memory_string_index_long | 250 / 202 | 223 / 176 | 122 / 106 | 127 / 107 |
| text_regex_logs_small | 1.51 / 0.96 | 1.60 / 1.03 | 0.91 / 0.74 | 2.58 / 0.98 |
| ticket_search | 40.4 / 38.2 | 39.8 / 37.4 | 15.1 / 11.6 | 20.4 / 19.5 |
| text_line_logs_medium | 24.3 / 23.7 | 24.1 / 23.6 | 12.8 / 11.2 | 17.5 / 16.9 |
| perf_unpack_sequence | 164 / 163 | 112 / 112 | 26.3 / 23.2 | 60.4 / 60.2 |
| text_csv_aggregate_small | 8.16 / 7.75 | 7.46 / 7.08 | 2.64 / 2.50 | 8.11 / 8.28 |
| text_csv_cleanup_small | 14.8 / 14.3 | 13.8 / 13.3 | 4.03 / 3.80 | 14.6 / 15.0 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)