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
- 17m 47s
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 · 03f566bb45669a7bc5770e601a117838fe2a3f25
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@03f566bb45669a7bc5770e601a117838fe2a3f25; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)fa2ba7b018b586097efcf2ff67d29794f4ab7dd08d477d5be99c5fb5fe105398
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.72 | 1.64 | 13.0 | 24.0 |
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 | 780 / 778 | 554 / 554 | 141 / 137 | 19.0 / 19.2 |
| portfolio_risk | 150 / 151 | 109 / 108 | 88.4 / 85.4 | 12.3 / 13.5 |
| game_spectral_norm | 681 / 681 | 460 / 461 | 142 / 136 | 22.0 / 21.6 |
| game_fannkuch | n/a | 2210 / 2220 | 459 / 454 | 87.0 / 89.6 |
| perf_float | 383 / 345 | 474 / 430 | 94.4 / 89.6 | 24.0 / 20.3 |
| expense_report | 0.40 / 0.36 | 0.44 / 0.37 | 1.73 / 0.53 | 0.42 / 0.55 |
| capacity_planning | 77.2 / 75.2 | 62.7 / 62.8 | 18.2 / 16.1 | 4.26 / 4.50 |
| order_cleanup | 0.44 / 0.33 | 0.53 / 0.40 | 1.80 / 0.60 | 0.49 / 0.65 |
| api_report | 0.82 / 0.46 | 0.89 / 0.46 | 1.79 / 0.59 | 0.47 / 0.63 |
| perf_json_loads | 1.58 / 1.19 | 1.81 / 1.36 | 3.36 / 2.02 | 1.24 / 1.34 |
| perf_barnes_hut | 6960 / 6970 | 6780 / 6930 | 1250 / 1230 | 699 / 551 |
| game_regex_dna | n/a | failed / failed | 346 / 331 | 215 / 155 |
| memory_string_list_short | 329 / 294 | 321 / 282 | 161 / 150 | 83.0 / 102 |
| stdout_lines | 3.59 / 3.90 | 4.14 / 4.41 | 6.85 / 4.86 | 6.25 / 4.71 |
| memory_customer_records | 604 / 553 | 566 / 467 | 255 / 256 | 197 / 143 |
| text_csv_aggregate_medium | 576 / 554 | 618 / 619 | 135 / 130 | 93.8 / 74.5 |
| memory_string_list_long | 446 / 413 | 448 / 389 | 173 / 161 | 117 / 151 |
| memory_string_index_short | 150 / 126 | 149 / 125 | 106 / 96.7 | 102 / 65.5 |
| text_json_parse_medium | 14.7 / 10.7 | 17.1 / 13.5 | 15.4 / 13.2 | 10.4 / 10.3 |
| perf_json_dumps | 13.9 / 11.5 | 16.7 / 14.1 | 18.6 / 16.6 | 23.1 / 19.0 |
| text_json_lines_medium | 20.2 / 19.4 | 21.8 / 21.5 | 26.3 / 24.7 | 18.3 / 18.5 |
| text_csv_cleanup_medium | 1120 / 1100 | 1220 / 1230 | 259 / 254 | 191 / 185 |
| game_meteor_contest | n/a | 534 / 547 | 121 / 117 | 90.0 / 86.7 |
| text_json_transform_small | 0.87 / 0.54 | 0.93 / 0.61 | 0.67 / 0.66 | 0.52 / 0.66 |
| text_json_lines_small | 0.91 / 0.64 | 0.99 / 0.68 | 0.77 / 0.80 | 0.72 / 0.80 |
| text_json_parse_small | 0.75 / 0.47 | 0.82 / 0.49 | 0.48 / 0.50 | 0.39 / 0.56 |
| game_pidigits | n/a | n/a | 205 / 204 | 175 / 179 |
| memory_string_index_long | 213 / 181 | 215 / 182 | 115 / 107 | 115 / 99.7 |
| text_regex_logs_medium | 38.3 / 37.5 | 35.7 / 34.7 | 25.0 / 23.4 | 27.9 / 21.9 |
| text_json_transform_medium | 17.8 / 13.7 | 20.3 / 16.3 | 16.6 / 14.5 | 15.6 / 14.7 |
| text_line_logs_small | 0.56 / 0.54 | 0.57 / 0.56 | 0.55 / 0.55 | 0.61 / 0.67 |
| text_line_logs_medium | 26.9 / 26.3 | 22.4 / 21.8 | 13.4 / 12.3 | 17.2 / 16.4 |
| text_regex_logs_small | 1.41 / 0.96 | 1.45 / 0.99 | 0.91 / 0.74 | 2.55 / 0.98 |
| ticket_search | 41.3 / 39.2 | 36.9 / 36.2 | 13.8 / 11.3 | 19.9 / 19.1 |
| perf_unpack_sequence | 334 / 338 | 102 / 103 | 25.9 / 22.9 | 57.6 / 57.5 |
| text_csv_aggregate_small | 6.36 / 6.02 | 6.77 / 6.56 | 2.49 / 2.45 | 8.11 / 8.48 |
| text_csv_cleanup_small | 11.7 / 11.2 | 12.7 / 12.6 | 3.83 / 3.71 | 14.5 / 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)