Application benchmarks
- CPU
- AMD EPYC 7763 64-Core Processor · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 16m 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.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 · 64c44b814ddf718af9d6193784be776d65e05882
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@64c44b814ddf718af9d6193784be776d65e05882; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.0 (b940084d7 2026-09-28)35cf2dde84047d9a2273fc65575e359e1f69eab2d654aaf4a67e44affaf210fc
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.69 | 1.62 | 13.0 | 23.8 |
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 | 786 / 783 | 556 / 560 | 140 / 137 | 19.3 / 19.5 |
| portfolio_risk | 154 / 154 | 118 / 118 | 87.5 / 85.7 | 12.4 / 13.1 |
| game_spectral_norm | 700 / 710 | 528 / 529 | 142 / 137 | 22.8 / 22.0 |
| game_fannkuch | n/a | n/a | 461 / 465 | 87.9 / 89.4 |
| expense_report | 0.39 / 0.34 | 0.46 / 0.33 | 1.76 / 0.54 | 0.44 / 0.51 |
| capacity_planning | 77.1 / 75.9 | 65.2 / 63.0 | 18.7 / 16.6 | 4.30 / 4.36 |
| perf_float | 385 / 345 | 475 / 410 | 96.6 / 90.9 | 24.3 / 22.1 |
| order_cleanup | 0.45 / 0.36 | 0.52 / 0.40 | 1.82 / 0.58 | 0.50 / 0.66 |
| api_report | 0.82 / 0.43 | 0.87 / 0.47 | 1.81 / 0.59 | 0.49 / 0.63 |
| perf_json_loads | 1.62 / 1.15 | 1.78 / 1.37 | 3.38 / 2.09 | 1.26 / 1.38 |
| game_regex_dna | n/a | failed / failed | 345 / 329 | 216 / 156 |
| perf_barnes_hut | 6860 / 6760 | 7000 / 6970 | 1250 / 1240 | 708 / 652 |
| memory_string_list_short | 314 / 283 | 303 / 256 | 160 / 154 | 84.1 / 100 |
| stdout_lines | 3.83 / 2.98 | 4.16 / 4.10 | 6.93 / 4.84 | 6.46 / 4.78 |
| text_csv_aggregate_medium | 591 / 563 | 657 / 638 | 136 / 131 | 96.5 / 75.3 |
| memory_customer_records | 591 / 530 | 581 / 522 | 259 / 254 | 201 / 146 |
| memory_string_index_short | 145 / 120 | 149 / 124 | 110 / 102 | 104 / 65.5 |
| text_json_parse_medium | 14.9 / 10.7 | 16.6 / 12.6 | 15.7 / 13.1 | 10.6 / 9.97 |
| perf_json_dumps | 14.0 / 11.4 | 16.4 / 13.9 | 18.8 / 16.9 | 23.5 / 19.7 |
| memory_string_list_long | 430 / 399 | 421 / 379 | 173 / 166 | 119 / 155 |
| text_json_lines_medium | 20.5 / 19.7 | 22.2 / 21.1 | 26.7 / 25.2 | 18.8 / 19.2 |
| text_json_lines_small | 0.93 / 0.58 | 0.97 / 0.66 | 0.78 / 0.80 | 0.74 / 0.77 |
| text_csv_cleanup_medium | 1160 / 1110 | 1320 / 1290 | 261 / 254 | 193 / 187 |
| game_meteor_contest | n/a | failed / failed | 123 / 118 | 91.1 / 88.3 |
| text_json_transform_small | 0.88 / 0.54 | 0.96 / 0.59 | 0.68 / 0.70 | 0.54 / 0.64 |
| text_json_parse_small | 0.76 / 0.44 | 0.83 / 0.48 | 0.47 / 0.50 | 0.39 / 0.51 |
| game_pidigits | n/a | n/a | 205 / 205 | 177 / 176 |
| memory_string_index_long | 206 / 170 | 216 / 172 | 119 / 112 | 119 / 97.5 |
| text_line_logs_small | 0.58 / 0.52 | 0.58 / 0.57 | 0.54 / 0.60 | 0.62 / 0.67 |
| text_regex_logs_medium | 38.5 / 37.3 | 37.9 / 36.5 | 25.3 / 24.0 | 28.4 / 22.3 |
| text_json_transform_medium | 18.0 / 13.6 | 20.0 / 15.8 | 16.7 / 14.6 | 15.8 / 15.0 |
| text_line_logs_medium | 27.1 / 26.8 | 24.0 / 23.6 | 13.7 / 12.3 | 17.5 / 16.8 |
| text_regex_logs_small | 1.44 / 1.01 | 1.49 / 0.99 | 0.92 / 0.74 | 2.63 / 1.02 |
| ticket_search | 41.4 / 39.5 | 36.9 / 34.4 | 14.0 / 11.2 | 20.2 / 19.1 |
| perf_unpack_sequence | 336 / 345 | 105 / 104 | 26.0 / 22.9 | 58.0 / 58.3 |
| text_csv_aggregate_small | 6.45 / 6.05 | 7.21 / 6.80 | 2.49 / 2.41 | 8.25 / 8.44 |
| text_csv_cleanup_small | 11.9 / 11.4 | 13.7 / 13.2 | 3.85 / 3.79 | 14.7 / 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)