Application benchmarks
- CPU
- AMD EPYC 7763 64-Core Processor · 4 logical CPUs
- OS
- Linux-7.0.0-1017-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 19m 35s
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 · f3fb8e982560c754c5350bc30ed1d3b776bc0e2e
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@f3fb8e982560c754c5350bc30ed1d3b776bc0e2e; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.1 (58cf8f9c3 2026-10-13)1534ca12124727d3698d61a0da060a38a60923a90af86c0a2ff0a697558103a1
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.88 | 1.79 | 13.5 | 28.1 |
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 | 613 / 612 | 583 / 584 | 139 / 139 | 19.4 / 21.1 |
| portfolio_risk | 166 / 168 | 144 / 143 | 87.4 / 85.4 | 12.7 / 13.5 |
| game_spectral_norm | 623 / 623 | 590 / 589 | 136 / 133 | 23.1 / 22.2 |
| game_fannkuch | 2140 / 2130 | 2210 / 2190 | 469 / 472 | 88.2 / 88.1 |
| expense_report | 0.42 / 0.34 | 0.47 / 0.35 | 1.95 / 0.53 | 0.44 / 0.56 |
| order_cleanup | 0.46 / 0.35 | 0.54 / 0.41 | 2.01 / 0.64 | 0.51 / 0.65 |
| capacity_planning | 66.3 / 64.1 | 65.1 / 63.1 | 18.8 / 16.8 | 4.60 / 4.61 |
| perf_float | 468 / 425 | 499 / 440 | 99.3 / 92.6 | 25.6 / 23.6 |
| api_report | 0.90 / 0.46 | 0.96 / 0.48 | 2.01 / 0.60 | 0.51 / 0.64 |
| perf_json_loads | 1.78 / 1.39 | 1.90 / 1.34 | 3.78 / 2.14 | 1.28 / 1.35 |
| game_regex_dna | failed / failed | failed / failed | 329 / 324 | 225 / 161 |
| stdout_lines | 4.09 / 3.91 | 4.32 / 4.19 | 7.84 / 5.35 | 7.18 / 5.29 |
| memory_customer_records | 621 / 579 | 601 / 489 | 274 / 270 | 213 / 146 |
| perf_barnes_hut | 6670 / 6670 | 7290 / 7280 | 1260 / 1240 | 720 / 677 |
| memory_string_list_short | 352 / 314 | 331 / 274 | 169 / 158 | 94.1 / 95.9 |
| text_csv_aggregate_medium | 677 / 645 | 630 / 599 | 141 / 136 | 103 / 76.8 |
| memory_string_index_short | 171 / 137 | 161 / 124 | 121 / 104 | 121 / 66.3 |
| text_json_parse_medium | 16.3 / 11.8 | 17.1 / 12.3 | 16.0 / 13.1 | 10.7 / 10.2 |
| text_json_lines_medium | 20.2 / 19.8 | 22.4 / 21.9 | 27.5 / 26.9 | 18.6 / 19.4 |
| memory_string_list_long | 471 / 426 | 465 / 385 | 184 / 172 | 133 / 154 |
| text_csv_cleanup_medium | 1330 / 1310 | 1250 / 1210 | 265 / 259 | 203 / 192 |
| game_meteor_contest | 525 / 525 | 532 / 532 | 121 / 117 | 91.7 / 88.2 |
| text_json_transform_small | 0.97 / 0.55 | 1.01 / 0.55 | 0.70 / 0.66 | 0.54 / 0.66 |
| text_json_parse_small | 0.84 / 0.49 | 0.89 / 0.51 | 0.48 / 0.49 | 0.38 / 0.52 |
| text_json_lines_small | 0.98 / 0.67 | 1.08 / 0.71 | 0.83 / 0.82 | 0.76 / 0.76 |
| perf_json_dumps | 16.8 / 13.9 | 17.3 / 13.9 | 19.7 / 17.0 | 23.9 / 19.5 |
| game_pidigits | n/a | n/a | 202 / 201 | 179 / 182 |
| text_line_logs_small | 0.52 / 0.55 | 0.60 / 0.57 | 0.59 / 0.58 | 0.64 / 0.70 |
| text_json_transform_medium | 19.3 / 14.7 | 20.3 / 15.1 | 17.2 / 14.5 | 16.2 / 15.6 |
| memory_string_index_long | 242 / 192 | 229 / 186 | 131 / 116 | 136 / 112 |
| text_regex_logs_medium | 36.6 / 35.6 | 38.7 / 37.2 | 25.2 / 23.5 | 29.6 / 22.7 |
| text_regex_logs_small | 1.51 / 0.94 | 1.55 / 1.00 | 0.95 / 0.75 | 2.65 / 1.00 |
| text_line_logs_medium | 23.5 / 23.3 | 22.8 / 22.2 | 14.3 / 12.5 | 17.9 / 17.1 |
| ticket_search | 39.0 / 37.6 | 37.2 / 35.0 | 14.5 / 11.6 | 20.7 / 19.5 |
| perf_unpack_sequence | 162 / 160 | 101 / 100 | 26.4 / 22.7 | 58.8 / 59.3 |
| text_csv_aggregate_small | 7.30 / 6.96 | 6.94 / 6.41 | 2.66 / 2.55 | 8.30 / 8.55 |
| text_csv_cleanup_small | 13.6 / 13.2 | 12.7 / 12.2 | 3.98 / 3.81 | 14.9 / 15.7 |
Peak RSS · MiB · one-shot
Bars: Python 3.15 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)