In this article, the performance test results of Python version 3.14 are presented and compared with the results obtained for earlier releases — 3.13, 3.12, 3.11, and 3.10. A total of over 100 diverse benchmark tests were conducted, covering both computational operations and tasks related to data processing, input/output operations, and application startup.
The tests were performed using the pyperformance 1.12.0 library on computers running Windows 11. Two main types of hardware platforms were included in the study: desktop configurations with AMD Ryzen 7000 series processors, and devices based on 13th-generation Intel Core processors, representing laptops and mini PCs. The tested Python versions were: Python 3.14.0, Python 3.13.9, Python 3.12.10, Python 3.11.9, and Python 3.10.11 (all 64-bit builds).
To ensure objective results, each Python version was installed from scratch, without any pre-existing libraries or settings, using the following configuration options:

AMD Ryzen 7000 Series Desktop Processor
The first part of the tests was conducted on a desktop computer equipped with an AMD Ryzen 9 7900 processor, DDR5 memory, and an M.2 PCIe Gen4 NVMe drive. The table below presents the results of 111 benchmark tests performed using different Python versions on this device (JS – time unit; the best results for each individual test are highlighted in green).
| Benchmark | TU | Python 3.14 | Python 3.13 | Python 3.12 | Python 3.11 | Python 3.10 |
|---|---|---|---|---|---|---|
| 2to3 | ms | 214 | 213 | 220 | 210 | 244 |
| async_generators | ms | 257 | 250 | 244 | 194 | 233 |
| async_tree_cpu_io_mixed | ms | 363 | 409 | 522 | 578 | 682 |
| async_tree_cpu_io_mixed_tg | ms | 360 | 426 | 517 | 516 | |
| async_tree_eager | ms | 71.79 | 79.59 | 70.63 | ||
| async_tree_eager_cpu_io_mixed | ms | 297 | 305 | 306 | ||
| async_tree_eager_cpu_io_mixed_tg | ms | 332 | 372 | 428 | ||
| async_tree_eager_io | ms | 461 | 652 | 944 | ||
| async_tree_eager_io_tg | ms | 467 | 668 | 995 | ||
| async_tree_eager_memoization | ms | 155 | 182 | 171 | ||
| async_tree_eager_memoization_tg | ms | 202 | 241 | 308 | ||
| async_tree_eager_tg | ms | 152 | 181 | 215 | ||
| async_tree_io | ms | 453 | 576 | 855 | 959 | 1312 |
| async_tree_io_tg | ms | 438 | 597 | 890 | 929 | |
| async_tree_memoization | ms | 227 | 301 | 402 | 418 | 564 |
| async_tree_memoization_tg | ms | 223 | 310 | 379 | 400 | |
| async_tree_none | ms | 192 | 242 | 309 | 374 | 471 |
| async_tree_none_tg | ms | 181 | 220 | 295 | 296 | |
| asyncio_tcp | ms | 493 | 488 | 464 | 666 | 751 |
| asyncio_tcp_ssl | ms | 1307 | 1320 | 1271 | 1888 | 2061 |
| asyncio_websockets | ms | 140 | 457 | 456 | 458 | 457 |
| bench_mp_pool | ms | 98.28 | 93.27 | 98.2 | 87.71 | 87.0 |
| bench_thread_pool | μs | 725 | 692 | 721 | 716 | 763 |
| bpe_tokeniser | ms | 2858 | 2931 | 3050 | 2700 | 2942 |
| chameleon | ms | 9.65 | 10.25 | 8.94 | 8.93 | 10.7 |
| chaos | ms | 42.32 | 41.84 | 43.58 | 45.69 | 59.24 |
| comprehensions | μs | 10.9 | 10.8 | 13.5 | 13.7 | 14.8 |
| connected_components | ms | 358 | 356 | 344 | 401 | |
| coroutines | ms | 16.1 | 15.3 | 15.17 | 16.53 | 18.16 |
| coverage | ms | 51.5 | 48.7 | 28.21 | 37.05 | 35.0 |
| create_gc_cycles | μs | 1041 | 970 | 989 | 886 | 928 |
| crypto_pyaes | ms | 48.56 | 50.06 | 49.7 | 46.97 | 63.79 |
| dask | ms | 714 | 718 | 472 | ||
| deepcopy | μs | 170 | 231 | 217 | 224 | 261 |
| deepcopy_memo | μs | 19.3 | 26.1 | 24.9 | 24.6 | 29.8 |
| deepcopy_reduce | μs | 1.86 | 2.19 | 2.01 | 2.02 | 2.28 |
| deltablue | μs | 2349 | 2330 | 2466 | 2623 | 4314 |
| django_template | ms | 23.95 | 24.08 | 22.59 | 22.36 | 28.56 |
| docutils | ms | 1446 | 1442 | 1438 | 1390 | 1654 |
| dulwich_log | ms | 46.52 | 46.18 | 49.48 | 49.12 | 58.44 |
| fannkuch | ms | 253 | 255 | 245 | 243 | 260 |
| float | ms | 53.54 | 55.44 | 58.5 | 53.3 | 67.65 |
| gc_traversal | μs | 1798 | 1647 | 1678 | 1606 | 1483 |
| generators | ms | 19.92 | 22.27 | 23.57 | 41.18 | 41.94 |
| genshi_text | ms | 15.58 | 16.75 | 15.25 | 16.37 | 18.99 |
| genshi_xml | ms | 34.67 | 36.37 | 33.81 | 37.11 | 41.23 |
| go | ms | 82.93 | 98.0 | 89.13 | 93.43 | 134 |
| hexiom | μs | 4574 | 4423 | 4379 | 4273 | 5497 |
| html5lib | ms | 32.33 | 34.0 | 32.66 | 31.5 | 40.11 |
| json_dumps | μs | 6555 | 6166 | 5822 | 7672 | 8130 |
| json_loads | μs | 14.3 | 14.3 | 14.2 | 12.9 | 14.0 |
| k_core | ms | 1598 | 1666 | 1859 | 2110 | |
| logging_format | μs | 6.07 | 6.24 | 6.52 | 6.44 | 6.87 |
| logging_silent | μs | 0.069 | 0.069 | 0.067 | 0.07 | 0.102 |
| logging_simple | μs | 5.66 | 5.76 | 6.12 | 5.97 | 6.48 |
| mako | μs | 7561 | 7040 | 7471 | 7299 | 8974 |
| many_optionals | μs | 636 | 367 | 371 | 363 | 404 |
| mdp | ms | 806 | 1610 | 1627 | 1636 | 1656 |
| meteor_contest | ms | 66.3 | 66.73 | 64.24 | 65.59 | 65.33 |
| nbody | ms | 83.73 | 85.28 | 81.67 | 73.06 | 82.72 |
| nqueens | ms | 61.37 | 59.21 | 59.94 | 60.22 | 62.37 |
| pathlib | ms | 230 | 227 | 229 | 215 | 216 |
| pickle | μs | 8.03 | 7.65 | 7.47 | 6.72 | 6.95 |
| pickle_dict | μs | 20.5 | 19.2 | 19.7 | 18.8 | 19.2 |
| pickle_list | μs | 3.02 | 2.82 | 2.88 | 2.65 | 2.62 |
| pickle_pure_python | μs | 208 | 193 | 194 | 193 | 260 |
| pidigits | ms | 130 | 133 | 135 | 136 | 137 |
| pprint_pformat | ms | 990 | 1033 | 989 | 971 | 1184 |
| pprint_safe_repr | ms | 484 | 507 | 482 | 471 | 573 |
| pyflate | ms | 311 | 309 | 312 | 288 | 396 |
| python_startup | ms | 33.02 | 32.41 | 32.79 | 30.72 | 31.73 |
| python_startup_no_site | ms | 32.77 | 33.77 | 34.8 | 33.93 | 34.62 |
| raytrace | ms | 187 | 184 | 195 | 199 | 275 |
| regex_compile | ms | 71.26 | 76.41 | 79.09 | 75.86 | 91.16 |
| regex_dna | ms | 109 | 111 | 100 | 103 | 110 |
| regex_effbot | μs | 1594 | 1718 | 1526 | 1705 | 1806 |
| regex_v8 | ms | 14.72 | 15.42 | 13.85 | 14.12 | 15.46 |
| richards | ms | 30.26 | 31.41 | 28.18 | 30.75 | 43.44 |
| richards_super | ms | 33.92 | 35.06 | 31.89 | 37.87 | 52.98 |
| scimark_fft | ms | 208 | 211 | 214 | 212 | 223 |
| scimark_lu | ms | 71.85 | 71.51 | 72.29 | 67.29 | 94.88 |
| scimark_monte_carlo | ms | 47.42 | 47.65 | 46.3 | 44.49 | 59.67 |
| scimark_sor | ms | 87.64 | 87.03 | 88.96 | 78.85 | 107 |
| scimark_sparse_mat_mult | μs | 3402 | 3179 | 3335 | 3247 | 3568 |
| shortest_path | ms | 369 | 364 | 355 | 407 | |
| spectral_norm | ms | 72.52 | 77.34 | 74.44 | 73.85 | 83.36 |
| sphinx | ms | 582 | 595 | 610 | 625 | |
| sqlalchemy_declarative | ms | 60.46 | 64.8 | 67.55 | 68.82 | 77.67 |
| sqlalchemy_imperative | μs | 6717 | 7188 | 7047 | 6966 | 8618 |
| sqlglot_v2_normalize | ms | 67.45 | 70.95 | 67.49 | 68.99 | 79.56 |
| sqlglot_v2_optimize | ms | 32.12 | 33.7 | 32.72 | 32.44 | 37.23 |
| sqlglot_v2_parse | μs | 833 | 819 | 846 | 884 | 1139 |
| sqlglot_v2_transpile | μs | 1008 | 1006 | 1030 | 1063 | 1349 |
| sqlite_synth | μs | 1.47 | 1.53 | 1.53 | 1.36 | 1.53 |
| subparsers | ms | 46.02 | 18.28 | 45.45 | 40.11 | 45.82 |
| sympy_expand | ms | 249 | 253 | 242 | 247 | 270 |
| sympy_integrate | ms | 11.06 | 11.62 | 11.44 | 11.59 | 12.75 |
| sympy_str | ms | 146 | 150 | 150 | 151 | 164 |
| sympy_sum | ms | 75.75 | 79.31 | 81.49 | 84.4 | 91.92 |
| telco | μs | 4712 | 4797 | 4450 | 3925 | 3844 |
| tomli_loads | ms | 1498 | 1497 | 1521 | 1418 | 1702 |
| tornado_http | ms | 97.62 | 101 | 102 | 102 | 117 |
| typing_runtime_protocols | μs | 103 | 107 | 101 | 297 | 314 |
| unpack_sequence | μs | 0.046 | 0.045 | 0.05 | 0.037 | 0.047 |
| unpickle | μs | 9.03 | 9.21 | 9.02 | 7.81 | 8.57 |
| unpickle_list | μs | 2.89 | 2.63 | 3.11 | 2.53 | 2.98 |
| unpickle_pure_python | μs | 151 | 148 | 146 | 148 | 178 |
| xml_etree_generate | ms | 58.13 | 59.15 | 59.31 | 52.36 | 58.35 |
| xml_etree_iterparse | ms | 54.59 | 55.84 | 57.21 | 56.51 | 57.17 |
| xml_etree_parse | ms | 72.94 | 77.09 | 77.18 | 81.18 | 81.96 |
| xml_etree_process | ms | 40.8 | 41.25 | 40.8 | 37.97 | 45.27 |
13th Gen Intel Core Mobile Processor
The second part of the tests was carried out on a mini PC equipped with an Intel Core i3-1315U processor (also commonly used in laptops), DDR4 memory, and an M.2 PCIe Gen4 NVMe drive. The table below shows the results of 110 benchmark tests performed using different Python versions on this device (TU – time unit; the best results for each individual test are highlighted in green).
| Benchmark | TU | Python 3.14 | Python 3.13 | Python 3.12 | Python 3.11 | Python 3.10 |
|---|---|---|---|---|---|---|
| 2to3 | ms | 270 | 267 | 260 | 257 | 293 |
| async_generators | ms | 262 | 247 | 253 | 194 | 253 |
| async_tree_cpu_io_mixed | ms | 376 | 442 | 567 | 691 | 705 |
| async_tree_cpu_io_mixed_tg | ms | 373 | 451 | 573 | 600 | |
| async_tree_eager | ms | 81.44 | 91.51 | 79.77 | ||
| async_tree_eager_cpu_io_mixed | ms | 352 | 348 | 360 | ||
| async_tree_eager_cpu_io_mixed_tg | ms | 363 | 401 | 486 | ||
| async_tree_eager_io | ms | 462 | 610 | 813 | ||
| async_tree_eager_io_tg | ms | 454 | 600 | 819 | ||
| async_tree_eager_memoization | ms | 174 | 212 | 205 | ||
| async_tree_eager_memoization_tg | ms | 228 | 256 | 349 | ||
| async_tree_eager_tg | ms | 185 | 195 | 241 | ||
| async_tree_io | ms | 448 | 580 | 808 | 904 | 1146 |
| async_tree_io_tg | ms | 452 | 579 | 817 | 880 | |
| async_tree_memoization | ms | 253 | 321 | 432 | 476 | 581 |
| async_tree_memoization_tg | ms | 246 | 323 | 404 | 448 | |
| async_tree_none | ms | 201 | 262 | 342 | 445 | 476 |
| async_tree_none_tg | ms | 203 | 233 | 330 | 346 | |
| asyncio_tcp | ms | 603 | 566 | 588 | 788 | 890 |
| asyncio_tcp_ssl | ms | 1616 | 1588 | 1639 | 2881 | 2890 |
| asyncio_websockets | ms | 184 | 356 | 359 | 379 | 364 |
| bench_mp_pool | ms | 124 | 112 | 121 | 118 | 107 |
| bench_thread_pool | μs | 1183 | 1043 | 1068 | 1209 | 1227 |
| bpe_tokeniser | ms | 5177 | 5132 | 5698 | 5154 | 5585 |
| chameleon | ms | 11.3 | 11.46 | 9.81 | 11.38 | 12.32 |
| chaos | ms | 46.7 | 46.74 | 47.61 | 57.35 | 67.86 |
| comprehensions | μs | 12.9 | 12.9 | 15.4 | 17.8 | 18.6 |
| connected_components | ms | 373 | 376 | 346 | 389 | |
| coroutines | ms | 16.19 | 14.95 | 15.42 | 18.08 | 18.07 |
| coverage | ms | 161 | 154 | 30.96 | 41.75 | 33.08 |
| create_gc_cycles | μs | 1750 | 1438 | 1492 | 1351 | 1306 |
| crypto_pyaes | ms | 57.28 | 52.81 | 53.37 | 54.63 | 70.81 |
| dask | ms | 2241 | 2105 | 1010 | ||
| deepcopy | μs | 198 | 270 | 252 | 273 | 297 |
| deepcopy_memo | μs | 20.5 | 28.5 | 26.5 | 30.3 | 32.4 |
| deepcopy_reduce | μs | 2.12 | 2.5 | 2.26 | 2.57 | 2.52 |
| deltablue | μs | 2408 | 2323 | 2290 | 3185 | 4649 |
| django_template | ms | 27.55 | 27.14 | 24.87 | 31.1 | 33.28 |
| docutils | ms | 1906 | 1812 | 1810 | 1998 | 2416 |
| fannkuch | ms | 283 | 296 | 272 | 326 | 311 |
| float | ms | 55.03 | 58.99 | 59.25 | 65.3 | 68.68 |
| gc_traversal | μs | 3107 | 2670 | 2678 | 2520 | 2234 |
| generators | ms | 23.72 | 23.19 | 22.51 | 38.68 | 35.96 |
| genshi_text | ms | 18.09 | 18.19 | 16.39 | 20.33 | 21.97 |
| genshi_xml | ms | 40.07 | 40.3 | 36.33 | 46.53 | 45.24 |
| go | ms | 91.76 | 106 | 95.02 | 120 | 155 |
| hexiom | μs | 4790 | 4690 | 4456 | 5253 | 6165 |
| html5lib | ms | 44.18 | 47.6 | 43.86 | 47.39 | 56.63 |
| json_dumps | μs | 7253 | 7070 | 6797 | 9295 | 9358 |
| json_loads | μs | 16.8 | 16.8 | 17.2 | 17.7 | 16.1 |
| k_core | ms | 3036 | 3092 | 3278 | 4010 | |
| logging_format | μs | 7.36 | 7.0 | 7.15 | 8.3 | 8.07 |
| logging_silent | μs | 0.068 | 0.07 | 0.065 | 0.085 | 0.107 |
| logging_simple | μs | 6.51 | 6.47 | 6.6 | 7.5 | 7.58 |
| mako | μs | 7445 | 7232 | 7340 | 8088 | 9625 |
| many_optionals | μs | 1009 | 612 | 638 | 615 | 690 |
| mdp | ms | 972 | 1725 | 1550 | 2108 | 1922 |
| meteor_contest | ms | 86.77 | 86.67 | 84.01 | 85.62 | 84.9 |
| nbody | ms | 81.58 | 81.58 | 78.3 | 81.58 | 79.14 |
| nqueens | ms | 71.84 | 68.81 | 66.93 | 73.6 | 76.85 |
| pathlib | ms | 87.59 | 89.06 | 84.07 | 76.32 | 74.25 |
| pickle | μs | 9.43 | 9.35 | 8.66 | 8.15 | 8.64 |
| pickle_dict | μs | 23.5 | 24.2 | 21.5 | 23.3 | 21.4 |
| pickle_list | μs | 4.15 | 3.68 | 3.29 | 3.37 | 3.41 |
| pickle_pure_python | μs | 251 | 222 | 220 | 251 | 311 |
| pidigits | ms | 172 | 168 | 168 | 168 | 167 |
| pprint_pformat | ms | 1156 | 1206 | 1146 | 1328 | 1397 |
| pprint_safe_repr | ms | 591 | 615 | 563 | 640 | 682 |
| pyflate | ms | 358 | 368 | 343 | 379 | 461 |
| python_startup | ms | 29.36 | 28.76 | 27.6 | 33.83 | 25.44 |
| python_startup_no_site | ms | 22.04 | 21.69 | 21.0 | 22.41 | 20.49 |
| raytrace | ms | 230 | 212 | 212 | 254 | 314 |
| regex_compile | ms | 91.82 | 103 | 96.15 | 114 | 117 |
| regex_dna | ms | 141 | 149 | 130 | 137 | 147 |
| regex_effbot | μs | 1903 | 1767 | 1655 | 1817 | 1859 |
| regex_v8 | ms | 17.47 | 17.05 | 15.38 | 16.79 | 17.24 |
| richards | ms | 32.25 | 34.28 | 28.18 | 37.17 | 44.82 |
| richards_super | ms | 35.45 | 38.53 | 31.95 | 47.73 | 57.58 |
| scimark_fft | ms | 211 | 215 | 205 | 226 | 216 |
| scimark_lu | ms | 64.2 | 74.67 | 66.77 | 77.47 | 93.73 |
| scimark_monte_carlo | ms | 48.13 | 52.98 | 48.27 | 54.87 | 65.04 |
| scimark_sor | ms | 87.8 | 94.79 | 88.79 | 96.92 | 115 |
| scimark_sparse_mat_mult | μs | 3050 | 2820 | 2884 | 3062 | 2957 |
| shortest_path | ms | 415 | 411 | 382 | 425 | |
| spectral_norm | ms | 72.74 | 73.3 | 72.23 | 82.72 | 85.23 |
| sphinx | ms | 756 | 770 | 754 | 886 | |
| sqlalchemy_declarative | ms | 93.21 | 97.23 | 98.18 | 110 | 124 |
| sqlalchemy_imperative | ms | 11.78 | 11.26 | 10.42 | 12.62 | 13.32 |
| sqlglot_v2_normalize | ms | 84.92 | 82.53 | 77.66 | 94.7 | 95.5 |
| sqlglot_v2_optimize | ms | 41.05 | 39.79 | 37.6 | 44.96 | 45.47 |
| sqlglot_v2_parse | μs | 938 | 961 | 925 | 1150 | 1388 |
| sqlglot_v2_transpile | μs | 1189 | 1214 | 1152 | 1369 | 1685 |
| sqlite_synth | μs | 1.95 | 1.92 | 2.0 | 1.96 | 2.16 |
| subparsers | ms | 70.49 | 28.55 | 57.79 | 53.36 | 59.32 |
| sympy_expand | ms | 352 | 340 | 309 | 347 | 368 |
| sympy_integrate | ms | 14.15 | 15.02 | 14.24 | 15.49 | 17.25 |
| sympy_str | ms | 194 | 207 | 191 | 210 | 226 |
| sympy_sum | ms | 100 | 105 | 100 | 116 | 126 |
| telco | μs | 5372 | 5950 | 4830 | 4558 | 4452 |
| tomli_loads | ms | 1547 | 1672 | 1556 | 1576 | 1932 |
| tornado_http | ms | 105 | 107 | 108 | 111 | 139 |
| typing_runtime_protocols | μs | 123 | 131 | 117 | 369 | 382 |
| unpack_sequence | μs | 0.042 | 0.045 | 0.044 | 0.05 | 0.044 |
| unpickle | μs | 9.7 | 10.7 | 9.7 | 8.84 | 9.55 |
| unpickle_list | μs | 3.08 | 3.08 | 3.3 | 2.92 | 3.3 |
| unpickle_pure_python | μs | 153 | 159 | 147 | 173 | 201 |
| xml_etree_generate | ms | 64.28 | 66.97 | 65.02 | 60.18 | 63.12 |
| xml_etree_iterparse | ms | 73.86 | 75.22 | 73.92 | 76.54 | 80.54 |
| xml_etree_parse | ms | 102 | 113 | 108 | 115 | 121 |
| xml_etree_process | ms | 44.46 | 47.58 | 43.16 | 42.62 | 51.4 |
Relative results
The video below presents relative performance results in the form of charts for individual groups of tests. The execution times obtained with Python version 3.14 were used as the reference point (100%).
More information can be found on the website: python.lewoniewski.info