Application benchmarks
- CPU
- AMD EPYC 9V74 80-Core Processor · 4 logical CPUs
- OS
- Linux-7.0.0-1017-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 16m 7s
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.1 · PyPy 8.0.1
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 · 0f243e6ae6df760f09040a17604e23d5264b65ba
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@0f243e6ae6df760f09040a17604e23d5264b65ba; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)d51642cf157dc32f62130fdc9ddd7c530d0067620e2511ccd6b8f14f840255e7
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.17 (ec82f20141cf, Oct 13 2026, 15:02:27)
[PyPy 8.0.1 with GCC 14.2.1 20250110 (Red Hat 14.2.1-11)]
/opt/hostedtoolcache/PyPy/3.11.17/x64/bin/pypy3.11
Source revision and compiler flags unverified7aebd6513a8f1dc8529abecf80d25b66951ddb5e9bab14b2750a7dab7947a94d
Process startup · ms
| Monty | @main | Python 3.15 | PyPy |
|---|---|---|---|
| 1.78 | 1.75 | 11.8 | 25.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 | 514 / 513 | 460 / 463 | 118 / 112 | 15.0 / 15.7 |
| portfolio_risk | 132 / 132 | 122 / 122 | 72.1 / 67.9 | 10.8 / 11.6 |
| game_spectral_norm | 506 / 507 | 503 / 501 | 111 / 104 | 18.3 / 17.8 |
| expense_report | 0.34 / 0.29 | 0.41 / 0.30 | 1.46 / 0.45 | 0.32 / 0.46 |
| game_fannkuch | 1750 / 1760 | 1790 / 1770 | 355 / 349 | 77.1 / 77.1 |
| capacity_planning | 54.2 / 52.4 | 55.0 / 53.1 | 15.4 / 13.4 | 3.58 / 3.84 |
| api_report | 0.73 / 0.38 | 0.83 / 0.40 | 1.52 / 0.50 | 0.37 / 0.54 |
| perf_float | 382 / 342 | 424 / 375 | 82.8 / 75.8 | 20.8 / 21.0 |
| order_cleanup | 0.40 / 0.30 | 0.49 / 0.34 | 1.53 / 0.50 | 0.39 / 0.54 |
| perf_json_loads | 1.39 / 0.97 | 1.54 / 1.10 | 2.85 / 1.63 | 0.98 / 1.13 |
| game_regex_dna | failed / failed | failed / failed | 272 / 264 | 180 / 133 |
| perf_barnes_hut | 5490 / 5500 | 5840 / 5910 | 989 / 945 | 546 / 520 |
| stdout_lines | 3.16 / 3.16 | 3.09 / 3.07 | 5.43 / 3.63 | 5.17 / 3.85 |
| memory_string_list_short | 293 / 239 | 281 / 235 | 130 / 120 | 77.8 / 85.4 |
| memory_customer_records | 549 / 448 | 566 / 526 | 214 / 212 | 176 / 132 |
| text_csv_aggregate_medium | 567 / 551 | 536 / 523 | 112 / 103 | 83.0 / 68.9 |
| text_json_lines_medium | 15.8 / 15.4 | 17.9 / 17.5 | 21.7 / 20.3 | 14.7 / 17.3 |
| text_json_parse_medium | 13.7 / 9.84 | 15.0 / 11.0 | 12.4 / 10.3 | 8.93 / 8.87 |
| memory_string_index_short | 146 / 123 | 137 / 109 | 93.5 / 81.3 | 104 / 59.4 |
| text_json_lines_small | 0.79 / 0.47 | 0.85 / 0.52 | 0.63 / 0.64 | 0.56 / 0.63 |
| text_csv_cleanup_medium | 1100 / 1100 | 1060 / 1050 | 205 / 196 | 159 / 145 |
| game_meteor_contest | 438 / 439 | 454 / 455 | 95.2 / 90.8 | 72.0 / 69.9 |
| memory_string_list_long | 397 / 324 | 381 / 306 | 144 / 132 | 114 / 132 |
| text_json_transform_small | 0.76 / 0.42 | 0.83 / 0.46 | 0.54 / 0.53 | 0.43 / 0.52 |
| text_json_parse_small | 0.66 / 0.35 | 0.71 / 0.36 | 0.36 / 0.37 | 0.30 / 0.41 |
| text_line_logs_small | 0.43 / 0.39 | 0.47 / 0.43 | 0.41 / 0.44 | 0.46 / 0.52 |
| perf_json_dumps | 13.9 / 11.3 | 14.2 / 11.6 | 14.8 / 12.8 | 17.7 / 14.4 |
| game_pidigits | n/a | n/a | 170 / 170 | 152 / 154 |
| memory_string_index_long | 203 / 170 | 195 / 158 | 106 / 97.8 | 117 / 89.2 |
| text_json_transform_medium | 16.3 / 12.1 | 17.3 / 13.3 | 13.6 / 11.6 | 13.1 / 12.9 |
| text_regex_logs_medium | 29.3 / 28.5 | 31.6 / 30.3 | 18.1 / 17.2 | 22.7 / 18.4 |
| text_regex_logs_small | 1.20 / 0.77 | 1.28 / 0.83 | 0.70 / 0.58 | 2.04 / 0.86 |
| text_line_logs_medium | 18.4 / 18.1 | 19.1 / 18.7 | 10.2 / 8.68 | 14.0 / 14.4 |
| ticket_search | 31.9 / 30.8 | 31.0 / 29.7 | 11.6 / 9.17 | 16.3 / 16.4 |
| perf_unpack_sequence | 127 / 126 | 82.8 / 82.0 | 20.7 / 19.2 | 46.6 / 46.9 |
| text_csv_aggregate_small | 6.02 / 5.73 | 5.78 / 5.49 | 2.07 / 1.98 | 6.35 / 6.64 |
| text_csv_cleanup_small | 11.0 / 10.7 | 10.7 / 10.3 | 3.15 / 3.00 | 11.5 / 12.2 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)