Application benchmarks
- CPU
- Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz · 4 logical CPUs
- OS
- Linux-6.17.0-1022-azure-x86_64-with-glibc2.39
- Samples
- 10
- Parallel jobs
- 1
- Run duration
- 16m 37s
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.14: CPython 3.14.8 · 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 · c3045d5435859e5d679e9e427b98a1bc28c13877
/home/runner/work/flying-circus/flying-circus/_runtimes/monty-main/bin/monty
Source build: https://github.com/pydantic/monty@c3045d5435859e5d679e9e427b98a1bc28c13877; cargo build --locked --release -p monty-runtime --bin monty; rustc 1.99.0 (b940084d7 2026-09-28)094622d93c3cad3d325dcdf7df5f725a0206d781aab74b58e7f86867741143a8
python3.14 · cpython · Python 3.14.8
/opt/hostedtoolcache/Python/3.14.8/x64/bin/python3.14
Source revision and compiler flags unverifieda5230d8adbd26c2185d77fb003597c4ee9c44c2369fc179122ff7c3a3a58ae59
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.14 | Python 3.15 | PyPy |
|---|---|---|---|---|
| 1.65 | 1.48 | 11.6 | 11.7 | 21.6 |
Runtime · ms · one-shot / repeated
Bars: Python 3.14 = midpoint · blue above = faster, red below = slower · shared asinh scale (5% transition)
| Workload | Monty | @main | Python 3.14 | Python 3.15 | PyPy |
|---|---|---|---|---|---|
| game_nbody | 568 / 566 | 543 / 545 | 119 / 123 | 125 / 123 | 22.9 / 19.1 |
| portfolio_risk | 99.8 / 100 | 86.9 / 86.7 | 82.1 / 82.1 | 87.6 / 87.8 | 18.9 / 14.9 |
| game_fannkuch | n/a | n/a | 464 / 468 | 443 / 446 | 92.2 / 93.1 |
| game_spectral_norm | 497 / 498 | 436 / 437 | 121 / 120 | 119 / 119 | 28.0 / 24.5 |
| capacity_planning | 53.8 / 52.5 | 50.4 / 49.1 | 18.2 / 16.8 | 15.7 / 14.3 | 4.29 / 4.36 |
| expense_report | 0.42 / 0.34 | 0.46 / 0.36 | 1.75 / 0.52 | 1.72 / 0.54 | 0.42 / 0.56 |
| api_report | 0.84 / 0.56 | 0.90 / 0.59 | 1.79 / 0.63 | 1.77 / 0.60 | 0.47 / 0.63 |
| perf_float | 340 / 322 | 392 / 353 | 87.7 / 83.1 | 88.7 / 85.4 | 25.3 / 21.9 |
| order_cleanup | 0.50 / 0.43 | 0.55 / 0.45 | 1.79 / 0.57 | 1.79 / 0.67 | 0.48 / 0.64 |
| perf_json_loads | 1.56 / 1.28 | 1.78 / 1.36 | 3.31 / 2.00 | 3.30 / 2.05 | 1.26 / 1.41 |
| text_json_parse_medium | 13.3 / 11.4 | 14.4 / 12.4 | 15.8 / 14.4 | 15.3 / 14.3 | 6.65 / 7.37 |
| stdout_lines | 3.21 / 3.29 | 3.09 / 3.66 | 6.47 / 4.74 | 6.49 / 5.32 | 6.08 / 5.60 |
| perf_barnes_hut | 5310 / 5320 | 5730 / 5740 | 1050 / 1070 | 1060 / 1070 | 519 / 552 |
| game_regex_dna | n/a | n/a | 293 / 286 | 313 / 309 | 219 / 163 |
| memory_customer_records | 493 / 441 | 498 / 455 | 249 / 258 | 282 / 283 | 142 / 159 |
| memory_string_list_short | 285 / 257 | 265 / 239 | 147 / 139 | 161 / 156 | 87.8 / 103 |
| perf_json_dumps | 13.0 / 11.9 | 14.0 / 13.0 | 20.3 / 19.1 | 18.5 / 17.1 | 25.9 / 17.7 |
| text_json_transform_medium | 16.8 / 14.9 | 17.6 / 15.7 | 17.0 / 16.3 | 17.1 / 15.7 | 11.0 / 12.0 |
| memory_string_list_long | 382 / 343 | 363 / 342 | 157 / 149 | 172 / 167 | 107 / 127 |
| text_json_lines_medium | 18.3 / 18.1 | 19.7 / 19.2 | 25.9 / 25.0 | 25.8 / 25.6 | 19.3 / 19.4 |
| text_csv_aggregate_medium | 510 / 506 | 529 / 529 | 117 / 112 | 123 / 116 | 89.2 / 84.4 |
| game_meteor_contest | n/a | n/a | 118 / 118 | 119 / 117 | 99.0 / 92.8 |
| text_json_lines_small | 0.93 / 0.68 | 0.93 / 0.69 | 0.74 / 0.79 | 0.74 / 0.75 | 0.98 / 0.85 |
| game_pidigits | n/a | n/a | 205 / 204 | 204 / 204 | 182 / 178 |
| text_csv_cleanup_medium | 1020 / 1010 | 1060 / 1040 | 221 / 219 | 228 / 222 | 196 / 191 |
| text_csv_cleanup_small | 10.2 / 10.0 | 10.6 / 11.3 | 3.21 / 3.70 | 3.33 / 3.28 | 18.7 / 14.3 |
| memory_string_index_short | 141 / 136 | 143 / 133 | 109 / 102 | 121 / 118 | 109 / 91.2 |
| text_line_logs_small | 0.55 / 0.49 | 0.54 / 0.48 | 0.49 / 0.54 | 0.50 / 0.60 | 0.87 / 0.67 |
| text_json_transform_small | 0.86 / 0.62 | 0.92 / 0.66 | 0.63 / 0.65 | 0.62 / 0.68 | 0.78 / 0.69 |
| memory_string_index_long | 199 / 182 | 197 / 185 | 122 / 113 | 134 / 128 | 131 / 112 |
| text_json_parse_small | 0.72 / 0.52 | 0.76 / 0.53 | 0.43 / 0.44 | 0.44 / 0.47 | 0.60 / 0.60 |
| text_line_logs_medium | 21.3 / 21.1 | 22.1 / 20.5 | 13.0 / 12.0 | 13.3 / 12.6 | 16.7 / 16.1 |
| text_csv_aggregate_small | 5.56 / 5.31 | 5.71 / 5.58 | 2.16 / 2.19 | 2.23 / 2.35 | 8.38 / 7.88 |
| text_regex_logs_medium | 34.0 / 32.9 | 32.7 / 30.7 | 22.5 / 22.3 | 23.9 / 23.3 | 29.1 / 24.1 |
| ticket_search | 34.5 / 34.1 | 34.5 / 34.3 | 13.0 / 10.9 | 13.6 / 11.8 | 23.5 / 19.4 |
| text_regex_logs_small | 1.33 / 0.98 | 1.35 / 0.95 | 0.81 / 0.70 | 0.86 / 0.77 | 2.36 / 1.03 |
| perf_unpack_sequence | 331 / 334 | 331 / 337 | 23.1 / 21.0 | 24.4 / 22.2 | 57.7 / 54.1 |
Peak RSS · MiB · one-shot
Bars: Python 3.14 = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)
| Workload | Monty | @main | Python 3.14 | Python 3.15 | PyPy |
|---|---|---|---|---|---|
| text_json_transform_medium | 24.4 | 24.4 | 24.4 | 24.3 | 160 |
| stdout_lines | 20.0 | 20.1 | 20.1 | 20.0 | 70.6 |
| order_cleanup | 19.9 | 20.0 | 20.1 | 20.0 | 67.1 |
| text_json_transform_small | 19.9 | 20.0 | 20.1 | 20.1 | 69.1 |
| game_regex_dna | n/a | n/a | 20.1 | 20.0 | 111 |
| text_csv_aggregate_small | 20.1 | 20.1 | 20.1 | 20.0 | 73.8 |
| text_line_logs_medium | 24.3 | 24.3 | 24.4 | 24.4 | 154 |
| game_pidigits | n/a | n/a | 20.1 | 20.0 | 80.0 |
| text_csv_cleanup_small | 20.0 | 20.1 | 20.0 | 19.9 | 79.2 |
| expense_report | 20.0 | 19.9 | 20.0 | 20.0 | 67.1 |
| text_json_lines_medium | 24.8 | 24.8 | 24.9 | 24.8 | 161 |
| text_regex_logs_small | 20.0 | 20.0 | 20.0 | 19.9 | 69.4 |
| ticket_search | 20.0 | 20.0 | 20.0 | 20.0 | 79.7 |
| capacity_planning | 19.9 | 20.0 | 20.0 | 20.1 | 71.5 |
| perf_json_loads | 20.0 | 20.0 | 20.0 | 20.0 | 67.1 |
| text_json_lines_small | 20.0 | 20.0 | 20.0 | 20.1 | 69.1 |
| text_json_parse_small | 20.1 | 20.0 | 20.1 | 20.0 | 69.1 |
| text_regex_logs_medium | 22.3 | 22.2 | 22.2 | 22.2 | 173 |
| portfolio_risk | 20.1 | 20.0 | 20.1 | 20.1 | 78.5 |
| perf_barnes_hut | 20.0 | 20.1 | 20.1 | 20.0 | 90.5 |
| perf_unpack_sequence | 20.0 | 20.0 | 20.0 | 20.0 | 78.9 |
| game_spectral_norm | 20.0 | 20.0 | 20.0 | 20.1 | 78.9 |
| game_meteor_contest | n/a | n/a | 20.1 | 20.1 | 80.3 |
| api_report | 20.0 | 20.0 | 20.0 | 20.1 | 67.1 |
| game_nbody | 20.1 | 20.1 | 20.1 | 20.1 | 78.6 |
| game_fannkuch | n/a | n/a | 20.1 | 20.1 | 78.5 |
| text_json_parse_medium | 24.4 | 24.4 | 24.3 | 24.3 | 160 |
| text_line_logs_small | 20.1 | 20.0 | 20.0 | 20.1 | 69.2 |
| perf_json_dumps | 20.0 | 20.0 | 20.0 | 20.0 | 79.1 |
| memory_customer_records | 156 | 157 | 67.4 | 68.1 | 152 |
| memory_string_list_long | 113 | 112 | 69.1 | 69.8 | 145 |
| memory_string_index_long | 67.5 | 67.7 | 53.3 | 54.0 | 141 |
| memory_string_index_short | 55.9 | 56.3 | 41.7 | 42.3 | 126 |
| memory_string_list_short | 89.4 | 89.8 | 45.9 | 46.6 | 113 |
| text_csv_cleanup_medium | 49.8 | 49.5 | 33.1 | 33.9 | 176 |
| perf_float | 57.9 | 57.3 | 28.3 | 29.3 | 84.6 |
| text_csv_aggregate_medium | 42.1 | 41.9 | 27.3 | 28.3 | 168 |