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
- 20
- Parallel jobs
- 1
- Run duration
- 33m 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.1.0 · Monty main: Monty 1.1.0 · cpython-baseline: CPython 3.14.8 · 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)fc8793eb36ed04d2ee46e79844218874b332a0cdf5add06eeb0dbe9a845e6455
cpython-baseline · cpython · Python 3.14.8
/opt/hostedtoolcache/Python/3.14.8/x64/bin/python3.14
Source revision and compiler flags unverifieda5230d8adbd26c2185d77fb003597c4ee9c44c2369fc179122ff7c3a3a58ae59
cpython · 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 | Monty main | cpython-baseline | CPython | PyPy |
|---|---|---|---|---|
| 1.81 | 1.78 | 13.2 | 13.3 | 25.5 |
Runtime · ms · one-shot / repeated
Bars: cpython-baseline = midpoint · blue above = faster, red below = slower · shared asinh scale (5% transition)
| Workload | Monty | Monty main | cpython-baseline | CPython | PyPy |
|---|---|---|---|---|---|
| game_nbody | 782 / 781 | 744 / 746 | 150 / 148 | 140 / 137 | 19.3 / 19.3 |
| portfolio_risk | 169 / 169 | 108 / 108 | 84.4 / 84.6 | 88.0 / 87.7 | 12.4 / 14.1 |
| game_spectral_norm | 684 / 683 | 571 / 572 | 135 / 138 | 142 / 136 | 22.4 / 22.5 |
| game_fannkuch | n/a | n/a | 492 / 490 | 458 / 453 | 87.7 / 87.8 |
| capacity_planning | 81.8 / 79.9 | 62.3 / 60.8 | 21.7 / 20.2 | 18.1 / 16.5 | 4.33 / 4.87 |
| expense_report | 0.39 / 0.34 | 0.45 / 0.37 | 1.90 / 0.58 | 1.76 / 0.57 | 0.45 / 0.58 |
| order_cleanup | 0.48 / 0.43 | 0.52 / 0.43 | 1.95 / 0.64 | 1.82 / 0.63 | 0.52 / 0.64 |
| perf_float | 388 / 348 | 485 / 421 | 95.4 / 88.7 | 95.2 / 89.8 | 24.5 / 22.5 |
| api_report | 0.82 / 0.47 | 0.90 / 0.54 | 1.94 / 0.63 | 1.80 / 0.62 | 0.51 / 0.64 |
| perf_json_loads | 1.62 / 1.20 | 1.80 / 1.35 | 3.68 / 2.24 | 3.45 / 2.09 | 1.28 / 1.61 |
| game_regex_dna | n/a | n/a | 316 / 311 | 344 / 333 | 218 / 150 |
| stdout_lines | 3.65 / 3.85 | 4.30 / 4.49 | 6.86 / 4.81 | 6.92 / 4.88 | 6.61 / 5.15 |
| memory_string_list_short | 323 / 276 | 296 / 246 | 157 / 150 | 162 / 150 | 85.1 / 174 |
| perf_barnes_hut | 7010 / 7050 | 7570 / 7570 | 1260 / 1260 | 1250 / 1240 | 712 / 699 |
| perf_json_dumps | 14.3 / 11.9 | 16.2 / 13.7 | 21.5 / 19.7 | 18.9 / 17.2 | 23.7 / 18.6 |
| text_json_parse_medium | 14.9 / 11.0 | 16.7 / 12.8 | 17.0 / 15.8 | 15.7 / 14.4 | 10.5 / 11.0 |
| text_csv_aggregate_medium | 586 / 572 | 624 / 610 | 137 / 133 | 137 / 133 | 97.1 / 83.2 |
| memory_customer_records | 596 / 496 | 557 / 456 | 257 / 262 | 257 / 264 | 205 / 173 |
| text_json_lines_medium | 20.0 / 19.4 | 21.9 / 21.1 | 28.2 / 26.9 | 26.8 / 26.2 | 18.6 / 19.2 |
| memory_string_index_short | 148 / 130 | 150 / 125 | 105 / 109 | 111 / 111 | 106 / 77.8 |
| game_meteor_contest | n/a | n/a | 123 / 122 | 122 / 120 | 90.7 / 88.0 |
| memory_string_list_long | 440 / 375 | 416 / 345 | 165 / 159 | 174 / 160 | 120 / 177 |
| memory_string_index_long | 213 / 185 | 215 / 179 | 117 / 119 | 122 / 121 | 120 / 88.2 |
| text_csv_cleanup_medium | 1150 / 1140 | 1230 / 1230 | 257 / 257 | 264 / 261 | 195 / 195 |
| text_json_transform_small | 0.88 / 0.58 | 0.97 / 0.61 | 0.71 / 0.73 | 0.68 / 0.73 | 0.54 / 0.66 |
| text_json_lines_small | 0.93 / 0.67 | 0.99 / 0.69 | 0.80 / 0.83 | 0.79 / 0.84 | 0.73 / 0.78 |
| text_json_parse_small | 0.77 / 0.47 | 0.81 / 0.49 | 0.49 / 0.52 | 0.47 / 0.50 | 0.40 / 0.65 |
| text_json_transform_medium | 18.1 / 14.5 | 19.7 / 16.1 | 18.5 / 17.0 | 17.1 / 15.8 | 15.8 / 16.5 |
| game_pidigits | n/a | n/a | 197 / 196 | 205 / 205 | 177 / 180 |
| text_line_logs_small | 0.58 / 0.57 | 0.60 / 0.57 | 0.55 / 0.61 | 0.55 / 0.61 | 0.62 / 0.71 |
| text_regex_logs_medium | 38.1 / 37.4 | 35.6 / 34.1 | 24.9 / 24.2 | 25.4 / 24.3 | 28.7 / 23.0 |
| perf_unpack_sequence | 333 / 341 | 347 / 345 | 27.1 / 23.6 | 26.4 / 23.5 | 58.1 / 59.5 |
| ticket_search | 41.4 / 40.1 | 42.6 / 41.4 | 14.1 / 11.8 | 13.9 / 11.7 | 20.4 / 20.5 |
| text_csv_aggregate_small | 6.34 / 6.01 | 6.72 / 6.43 | 2.53 / 2.48 | 2.51 / 2.47 | 8.29 / 8.90 |
| text_csv_cleanup_small | 11.7 / 11.3 | 12.6 / 12.2 | 3.80 / 3.76 | 3.85 / 3.77 | 14.9 / 16.2 |
| text_line_logs_medium | 26.3 / 25.7 | 26.1 / 25.8 | 13.7 / 12.2 | 13.8 / 12.5 | 17.5 / 17.1 |
| text_regex_logs_small | 1.44 / 0.99 | 1.48 / 1.03 | 0.92 / 0.79 | 0.92 / 0.81 | 2.68 / 1.07 |
Peak RSS · MiB · one-shot
Bars: cpython-baseline = midpoint · blue above = less memory, red below = more memory · shared asinh scale (5% transition)
| Workload | Monty | Monty main | cpython-baseline | CPython | PyPy |
|---|---|---|---|---|---|
| perf_unpack_sequence | 19.9 | 19.9 | 20.0 | 20.0 | 62.9 |
| order_cleanup | 19.9 | 20.0 | 20.0 | 20.0 | 57.5 |
| capacity_planning | 19.9 | 19.9 | 20.0 | 20.0 | 58.1 |
| perf_json_dumps | 20.0 | 19.8 | 19.9 | 20.0 | 60.6 |
| api_report | 20.0 | 19.9 | 20.0 | 19.9 | 57.5 |
| portfolio_risk | 19.9 | 19.9 | 20.0 | 20.0 | 58.5 |
| game_regex_dna | n/a | n/a | 20.0 | 19.9 | 87.2 |
| text_regex_logs_small | 20.0 | 19.9 | 20.0 | 20.0 | 58.1 |
| text_json_lines_small | 20.0 | 20.0 | 20.0 | 19.9 | 57.9 |
| text_line_logs_small | 20.0 | 20.0 | 20.0 | 20.0 | 57.9 |
| stdout_lines | 20.0 | 19.9 | 20.0 | 19.9 | 59.4 |
| text_json_transform_small | 19.9 | 19.9 | 19.9 | 19.9 | 57.9 |
| text_json_lines_medium | 24.9 | 24.8 | 24.8 | 24.8 | 124 |
| game_pidigits | n/a | n/a | 19.9 | 19.9 | 64.9 |
| text_json_parse_medium | 24.3 | 24.2 | 24.3 | 24.3 | 126 |
| text_json_parse_small | 20.0 | 20.0 | 20.0 | 20.0 | 57.9 |
| expense_report | 20.0 | 20.0 | 20.0 | 20.0 | 57.5 |
| text_line_logs_medium | 24.3 | 24.4 | 24.3 | 24.3 | 125 |
| perf_json_loads | 20.0 | 20.0 | 19.9 | 19.9 | 57.5 |
| game_fannkuch | n/a | n/a | 20.0 | 20.0 | 58.8 |
| ticket_search | 19.9 | 20.0 | 19.9 | 20.0 | 60.2 |
| text_regex_logs_medium | 22.2 | 22.1 | 22.1 | 22.2 | 127 |
| text_csv_aggregate_small | 20.0 | 19.9 | 19.9 | 20.0 | 58.6 |
| game_meteor_contest | n/a | n/a | 20.0 | 20.0 | 60.9 |
| game_nbody | 19.9 | 19.9 | 19.9 | 20.0 | 58.7 |
| perf_barnes_hut | 19.9 | 20.0 | 19.9 | 20.0 | 88.8 |
| game_spectral_norm | 20.0 | 19.9 | 19.9 | 20.0 | 59.1 |
| text_json_transform_medium | 24.2 | 24.3 | 24.1 | 24.3 | 126 |
| text_csv_cleanup_small | 20.0 | 20.0 | 19.9 | 20.0 | 59.2 |
| memory_string_list_long | 112 | 112 | 68.9 | 69.7 | 125 |
| memory_customer_records | 156 | 157 | 67.2 | 68.0 | 134 |
| memory_string_index_long | 67.6 | 67.6 | 53.2 | 53.9 | 124 |
| memory_string_list_short | 89.5 | 89.7 | 45.7 | 46.5 | 99.4 |
| memory_string_index_short | 55.9 | 55.9 | 41.5 | 42.3 | 108 |
| text_csv_cleanup_medium | 49.7 | 49.3 | 33.2 | 33.8 | 147 |
| text_csv_aggregate_medium | 41.9 | 41.7 | 27.3 | 27.9 | 149 |
| perf_float | 57.5 | 57.5 | 28.3 | 29.4 | 69.9 |