В данной статье представлены результаты тестов производительности языка Python версии 3.14, выполненные в сравнении с предыдущими выпусками — 3.13, 3.12, 3.11 и 3.10. Всего было проведено более 100 различных тестов производительности, охватывающих как вычислительные операции, так и задачи, связанные с обработкой данных, операциями ввода/вывода и запуском приложений.
Тестирование проводилось с использованием библиотеки pyperformance 1.12.0 на компьютерах под управлением Windows 11. В исследовании участвовали два основных типа аппаратных платформ: настольные системы с процессорами серии AMD Ryzen 7000 и устройства на базе процессоров Intel Core 13-го поколения, представляющие ноутбуки и мини-ПК.
Тестировались следующие версии Python: Python 3.14.0, Python 3.13.9, Python 3.12.10,
Python 3.11.9 и Python 3.10.11 (все 64-битные сборки).
Для обеспечения объективности результатов каждая версия Python устанавливалась «с нуля» — без заранее установленных библиотек или пользовательских настроек — с использованием следующих параметров конфигурации:

AMD Ryzen 7000-й серии для настольных ПК
Первая часть тестов была проведена на настольном компьютере, оснащённом процессором AMD Ryzen 9 7900, оперативной памятью DDR5 и твердотельным накопителем M.2 PCIe Gen4 NVMe. В таблице ниже представлены результаты 111 тестов производительности, выполненных с использованием различных версий Python на данном устройстве (ЕВ — единица времени; наилучшие результаты для каждого отдельного теста выделены красным).
| Название теста | ЕВ | 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 |
Процессор Intel Core 13-го поколения для мобильных ПК
Вторая часть тестов была проведена на мини-ПК, оснащённом процессором Intel Core i3-1315U (также часто используемым в ноутбуках), оперативной памятью DDR4 и твердотельным накопителем M.2 PCIe Gen4 NVMe. В таблице ниже приведены результаты 110 тестов производительности, выполненных с использованием различных версий Python на данном устройстве (ЕВ — единица времени; наилучшие результаты для каждого отдельного теста выделены красным).
| Название теста | ЕВ | 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 |
Относительные результаты
Видео ниже демонстрирует относительные результаты производительности в виде диаграмм для отдельных групп тестов. В качестве точки отсчёта (100%) использовались времена выполнения, полученные при использовании Python версии 3.14.
Более подробную информацию можно найти на сайте: python.lewoniewski.info