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
- 19m 21s
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.4.0 · @main: Monty 1.4.0 · Python 3.15: CPython 3.15.2 · PyPy 8.0.0
Runtimes and build details
monty · monty · 1.4.0
/home/runner/work/flying-circus/flying-circus/_runtimes/monty/bin/monty
Prebuilt PyPI wheel: pydantic-monty-runtime==1.4.0; source revision and compiler flags unverified4479e7306fdf0c6a2a567aa139150ac47c75ab3c0138ec2c4efa010c382a87e0
monty-main · monty · 4dd8e3a102f6e0dd9b41d3bf26f91644d41b3175
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@4dd8e3a102f6e0dd9b41d3bf26f91644d41b3175; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)99359bf5ae98f25c639ebe372a9a112cab0b6f03c78f9ee2337f82679e11290e
python3.15 · cpython · Python 3.15.2
/opt/hostedtoolcache/Python/3.15.2/x64/bin/python3.15
Source revision and compiler flags unverified2c54590c63d1ccaed1fdb78b62a413b7af41361eecbf45eb61698562e0f59e17
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.82 | 1.71 | 13.1 | 24.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 |
|---|---|---|---|---|
| portfolio_risk | 159 / 161 | 150 / 151 | 91.9 / 88.8 | 12.7 / 13.5 |
| game_nbody | 616 / 615 | 586 / 587 | 137 / 133 | 19.4 / 19.1 |
| game_spectral_norm | 602 / 602 | 599 / 598 | 133 / 130 | 22.6 / 22.0 |
| game_fannkuch | 2100 / 2090 | 2180 / 2160 | 450 / 447 | 86.6 / 86.3 |
| expense_report | 0.42 / 0.34 | 0.46 / 0.37 | 1.80 / 0.56 | 0.45 / 0.56 |
| perf_float | 470 / 428 | 521 / 456 | 97.0 / 92.3 | 24.9 / 21.3 |
| capacity_planning | 65.7 / 63.7 | 66.6 / 64.8 | 18.4 / 16.2 | 4.48 / 4.42 |
| order_cleanup | 0.48 / 0.36 | 0.54 / 0.42 | 1.81 / 0.60 | 0.52 / 0.63 |
| api_report | 0.84 / 0.48 | 0.94 / 0.49 | 1.82 / 0.60 | 0.52 / 0.63 |
| perf_json_loads | 1.65 / 1.27 | 1.82 / 1.38 | 3.48 / 2.04 | 1.30 / 1.37 |
| game_regex_dna | failed / failed | failed / failed | 322 / 317 | 217 / 155 |
| stdout_lines | 3.82 / 4.10 | 4.24 / 4.56 | 7.20 / 5.22 | 6.61 / 4.80 |
| perf_barnes_hut | 6690 / 6700 | 7280 / 7270 | 1230 / 1200 | 721 / 642 |
| memory_string_list_short | 340 / 297 | 327 / 271 | 161 / 154 | 86.5 / 101 |
| memory_customer_records | 606 / 509 | 582 / 485 | 267 / 261 | 203 / 146 |
| text_csv_aggregate_medium | 676 / 653 | 635 / 616 | 140 / 129 | 97.5 / 79.1 |
| memory_string_index_short | 164 / 142 | 160 / 130 | 113 / 105 | 109 / 67.4 |
| text_json_parse_medium | 16.1 / 12.2 | 17.1 / 12.8 | 16.4 / 14.1 | 10.8 / 10.9 |
| text_json_lines_medium | 20.5 / 20.6 | 22.6 / 21.8 | 27.0 / 25.8 | 18.9 / 18.8 |
| memory_string_list_long | 454 / 390 | 460 / 381 | 169 / 163 | 121 / 151 |
| text_csv_cleanup_medium | 1330 / 1310 | 1260 / 1230 | 263 / 256 | 196 / 189 |
| game_meteor_contest | 526 / 529 | 543 / 542 | 122 / 118 | 92.0 / 87.3 |
| text_json_lines_small | 0.95 / 0.63 | 1.02 / 0.71 | 0.79 / 0.81 | 0.75 / 0.81 |
| text_json_transform_small | 0.91 / 0.59 | 1.00 / 0.58 | 0.69 / 0.70 | 0.56 / 0.65 |
| perf_json_dumps | 16.6 / 14.2 | 17.4 / 15.4 | 19.3 / 17.2 | 23.6 / 19.7 |
| text_json_parse_small | 0.78 / 0.48 | 0.83 / 0.50 | 0.48 / 0.49 | 0.40 / 0.55 |
| text_line_logs_small | 0.53 / 0.50 | 0.57 / 0.56 | 0.57 / 0.59 | 0.64 / 0.68 |
| game_pidigits | n/a | n/a | 205 / 204 | 177 / 182 |
| text_json_transform_medium | 19.4 / 15.0 | 20.3 / 16.0 | 17.6 / 15.5 | 15.9 / 15.5 |
| memory_string_index_long | 229 / 193 | 236 / 188 | 125 / 113 | 122 / 102 |
| text_regex_logs_medium | 36.4 / 35.4 | 38.2 / 37.0 | 24.8 / 23.3 | 28.6 / 22.3 |
| text_line_logs_medium | 23.5 / 23.3 | 24.0 / 23.7 | 14.3 / 12.9 | 17.6 / 16.9 |
| text_regex_logs_small | 1.41 / 0.97 | 1.47 / 1.01 | 0.94 / 0.73 | 2.71 / 1.03 |
| ticket_search | 38.0 / 36.2 | 39.1 / 36.9 | 14.3 / 11.3 | 20.7 / 19.7 |
| perf_unpack_sequence | 164 / 163 | 105 / 104 | 26.0 / 21.5 | 58.2 / 58.7 |
| text_csv_aggregate_small | 7.21 / 6.96 | 6.85 / 6.49 | 2.55 / 2.42 | 8.23 / 8.51 |
| text_csv_cleanup_small | 13.5 / 13.1 | 12.9 / 12.4 | 3.81 / 3.75 | 14.9 / 15.6 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)