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
- 14m 16s
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)94fa39fa431d462d22a95078c4fda57a583af7a619f171a73ce3a1e88a81659f
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.50 | 1.45 | 11.0 | 20.6 |
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 | 654 / 653 | 615 / 618 | 133 / 111 | 15.0 / 15.7 |
| portfolio_risk | 122 / 123 | 96.0 / 95.7 | 78.4 / 67.9 | 10.6 / 11.3 |
| game_spectral_norm | 622 / 621 | 519 / 517 | 112 / 106 | 18.1 / 17.5 |
| game_fannkuch | n/a | n/a | 361 / 353 | 76.9 / 77.0 |
| capacity_planning | 63.7 / 62.0 | 53.5 / 51.9 | 16.0 / 13.2 | 3.52 / 3.52 |
| expense_report | 0.36 / 0.28 | 0.42 / 0.31 | 1.44 / 0.44 | 0.32 / 0.45 |
| api_report | 0.70 / 0.37 | 0.80 / 0.40 | 1.47 / 0.50 | 0.36 / 0.54 |
| order_cleanup | 0.40 / 0.29 | 0.47 / 0.36 | 1.50 / 0.51 | 0.38 / 0.54 |
| perf_float | 322 / 285 | 391 / 334 | 79.6 / 75.0 | 20.0 / 19.1 |
| perf_json_loads | 1.32 / 0.93 | 1.52 / 1.10 | 2.80 / 1.63 | 0.96 / 1.17 |
| perf_barnes_hut | 5670 / 5690 | 6160 / 6220 | 1070 / 969 | 541 / 451 |
| game_regex_dna | n/a | failed / failed | 289 / 273 | 176 / 131 |
| stdout_lines | 2.87 / 2.54 | 3.02 / 3.26 | 5.61 / 3.62 | 5.12 / 3.75 |
| memory_string_list_short | 269 / 231 | 268 / 217 | 133 / 121 | 73.3 / 79.1 |
| memory_customer_records | 542 / 485 | 513 / 408 | 211 / 207 | 169 / 115 |
| text_csv_aggregate_medium | 503 / 488 | 528 / 516 | 106 / 103 | 79.7 / 61.0 |
| memory_string_index_short | 131 / 110 | 131 / 108 | 87.6 / 80.8 | 91.9 / 53.4 |
| text_json_lines_medium | 16.1 / 15.8 | 17.7 / 17.4 | 21.3 / 20.0 | 14.5 / 15.0 |
| text_json_parse_medium | 12.7 / 9.03 | 15.1 / 11.4 | 12.1 / 9.92 | 8.58 / 8.09 |
| perf_json_dumps | 11.4 / 9.21 | 13.6 / 11.2 | 14.8 / 12.9 | 17.8 / 13.3 |
| text_json_lines_small | 0.78 / 0.46 | 0.83 / 0.52 | 0.63 / 0.63 | 0.58 / 0.62 |
| memory_string_list_long | 371 / 332 | 356 / 288 | 144 / 131 | 104 / 102 |
| game_meteor_contest | n/a | failed / failed | 97.6 / 92.1 | 71.8 / 70.5 |
| text_csv_cleanup_medium | 970 / 965 | 1030 / 1040 | 200 / 199 | 154 / 148 |
| text_json_transform_small | 0.75 / 0.43 | 0.82 / 0.48 | 0.53 / 0.53 | 0.40 / 0.51 |
| text_json_parse_small | 0.64 / 0.32 | 0.69 / 0.37 | 0.37 / 0.37 | 0.29 / 0.39 |
| game_pidigits | n/a | n/a | 171 / 170 | 151 / 150 |
| memory_string_index_long | 188 / 154 | 189 / 149 | 96.5 / 93.1 | 104 / 85.7 |
| text_json_transform_medium | 15.8 / 11.9 | 17.7 / 13.9 | 13.0 / 11.5 | 12.7 / 12.2 |
| text_line_logs_small | 0.46 / 0.42 | 0.50 / 0.47 | 0.43 / 0.42 | 0.45 / 0.53 |
| text_regex_logs_medium | 30.0 / 28.8 | 29.1 / 27.8 | 18.8 / 17.2 | 22.2 / 17.7 |
| text_regex_logs_small | 1.19 / 0.76 | 1.24 / 0.78 | 0.71 / 0.58 | 2.01 / 0.80 |
| ticket_search | 34.2 / 33.1 | 36.0 / 34.6 | 11.7 / 9.32 | 16.0 / 15.6 |
| text_line_logs_medium | 21.1 / 20.7 | 21.4 / 21.0 | 10.2 / 9.08 | 14.0 / 13.1 |
| perf_unpack_sequence | 283 / 284 | 302 / 298 | 20.7 / 19.3 | 47.1 / 47.5 |
| text_csv_aggregate_small | 5.38 / 5.07 | 5.68 / 5.42 | 2.05 / 1.95 | 6.29 / 6.60 |
| text_csv_cleanup_small | 9.80 / 9.50 | 10.5 / 10.2 | 3.12 / 2.93 | 11.3 / 11.9 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)