The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Оценка изменения производительности CPython за последние 5 лет

10.10.2025 08:51

Мигель Гринбе (Miguel Grinberg), автор нескольких книг по Python-фреймворкам SQLAlchemy и Flask, опубликовал результаты тестирования производительности веток CPython с 3.9 по 3.14. Дополнительно аналогичные тесты проведены для Pypy 3.11 (реализация Python с JIT-компилятором), Node.js 24 и Rust 1.90. Для выпусков CPython 3.13 и 3.14 дополнительно измерена производительность при включении JIT-компилятора и режима сборки Free-threading без глобальной блокировки.

Для изменения производительности использовались скрипты для вычисления чисел Фибоначчи (глубокая рекурсия) и пузырьковой сортировки случайно генерируемых чисел, запускаемые в однопоточном режиме и с разделением на 4 потока. Тесты запускались в Ubuntu 24.04 на ноутбуке с CPU Intel Core i5 и macOS Sequoia на ноутбуке с SoC Apple M2.

В большинстве тестов CPython 3.14 оказался быстрее ветки 3.13 примерно на 20%, при том, что в некоторых тестах ветки 3.11 и 3.12 оказались быстрее 3.13. Отрыв 3.14 от веток 3.9 и 3.10 составил примерно два раза. Pypy, Node.js и Rust обогнали CPython 3.14 в первом тесте в 4.93, 4.88 и 69.82 раз, а во втором тесте в 18.14, 6.64 и 36.15 раз, соответственно (сравнивались только однопоточные режимы).







Режим без глобальной блокировки в CPython 3.14 позволил в два раза ускорить многопоточное выполнение. Включение режима с JIT в CPython не привело к существенному росту производительности, а в тесте ветки 3.14 в macOS даже замедлило выполнение.



В однопоточных тестах режим без глобальной блокировки заметно замедлил выполнение задач, а режим с JIT почти не повлиял на производительность.





  1. Главная ссылка к новости (https://blog.miguelgrinberg.co...)
  2. OpenNews: Сравнение производительности сетевого драйвера в вариантах на 10 языках программирования
  3. OpenNews: Оценка производительности 14 серверов приложений на языке Python
  4. OpenNews: Оценка типичных проблем с безопасностью для различных языков программирования
  5. OpenNews: Оценка популярности грязных хаков у разработчиков на различных языках программирования
  6. OpenNews: Опубликованы тесты простейших приложений на различных языках программирования.
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64029-python
Ключевые слова: python, benchmark
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (52) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:06, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Все-таки ускорили питон? Не прошло и десяти лет. А нет, прошло.
     
     
  • 2.2, Аноним (2), 09:14, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > Все-таки ускорили питон? Не прошло и десяти лет. А нет, прошло.

    Видимо мсье не понимает что это такое в принципе, но обязательно должен высказаться.

     
  • 2.44, Аноним (44), 14:20, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Все-таки ускорили питон? Не прошло и десяти лет. А нет, прошло.

    На 20%. При отставании от C в 60 тысяч раз. Это успех.

     

  • 1.3, th3m3 (ok), 09:26, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну и кто там хотел избавиться от GIL? Довольны?)
     
     
  • 2.5, Аноним (5), 09:33, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Само по себе не имеет значения. Если асинхронный код в итоге выиграет, будет неплохо.
     
     
  • 3.9, Имя (?), 09:50, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Кому неплохо? Представь себе, в Python не все вeб-мakаки на хайлоаде, а в остальных местах async особо и ни нужон
     
     
  • 4.11, Аноним (5), 10:17, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кому неплохо? Представь себе, в Python не все вeб-мakаки на хайлоаде, а
    > в остальных местах async особо и ни нужон

    На локалхосте есть миллион и одна полезная задача, легко решающаяся асинхронным кодом. Только он на треть медленнее в 1 поток я так прикидывал, но если задача параллельная, легко отыгрывается. Ручная возня с запуском тредов ни разу не окупилась, они слишком неоптимальны в итоге.

     
     
  • 5.17, Аноним (17), 11:08, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ага, оптимизации в два раза в мульти-трединге между 3.13 и 3.14 просто показывают насколько весь язык не заточен для мульти-треда и конь не валялся оптимизировать это все. Взять любой мачурный язык, так дай бог если 5% ускорения в вакууме между релизами завозят
     
  • 5.21, Имя (?), 11:24, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если у тебя задача параллельная, где много чего-то ждут чего-то, а потом делают чего-то, то да, а если нет, то сам async становится лишней вознёй, и тем более странным выглядит желание некоторых фанатиков бездумно перетащить в async все библиотеки, думая видимо, что async "эта крута", и не совсем понимая, что это инструмент для довольно чётко очерченного круга задач
     
     
  • 6.23, Аноним (5), 11:37, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Никогда не знаешь, когда она станет параллельной. Сегодня 1 потока достаточно, а завтра ты захочешь 1000 запускать. У меня так было много раз с requests, зачем ждать 300 секунд, если можно управиться за 3? Потом sqlalchemy и так далее, да, такие библиотеки "это крута", и позволяют повысить производительность кода в сотни раз совершенно без затрат и значительных изменений логики.
     
     
  • 7.45, Витюшка (?), 14:22, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это если ты вообще не понимаешь что ты делаешь. Тебе нужно запускать максимум по одному потоку на ядро процессора.
     
     
  • 8.50, User (??), 14:33, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ээээ для i o bound задач ... текст свёрнут, показать
     
  • 2.6, Соль земли2 (?), 09:46, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    GIL им на хвост наступил.
     
  • 2.8, Аноним (8), 09:49, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Очень даже. 3.14 без gil будет побыстрее более ранних версий (за исключением 3.11 наверно) даже в однопоточке. А в многопоточке без gil уж и подавно. Вопрос только когда это все там устаканится, ибо неявных багов там должно быть еще море. 3.14 еще пилить и пилить. Изменение слишком уж кардинальное, впору было бы питон4 называть.
     
     
  • 3.20, th3m3 (ok), 11:15, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И опять без обратной совместимости, прощайте все батарейки :)
     

  • 1.4, Аноним (5), 09:31, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Производительность питона -- последнее что имеет значение на практике. Не удивлён производительности жита, небось, и сравнивали шланговые билды с гццшными?
     
     
  • 2.14, Аноним (14), 10:46, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Производительность программы не может не иметь значения. Это буквально время, оно самый дефицитный ресурс. То, что питонисты считают иначе, много о них говорит. Питон - это не язык создания программ, а клуб по интересам или секта.
     
     
  • 3.22, Аноним (5), 11:26, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Там, где нужна производительность, давно скомпилированный нативный код вызывается. И он освобождает gil. Ты так говоришь, будто на свете только pure-python реализации и всех заставляют ими пользоваться.

    Да и вон портаж уже переписали на плюсы, сильно эффективнее чёт не стало, зато сопровождение ммм прелесть. А ведь это всего лишь ПМ.

     
  • 3.24, Аноним (24), 11:46, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Где нужен перворманс там не питон выбирают. Так что на практике ему достаточно не быть таким дном как руби первой версии.
     
  • 3.40, Имя (?), 13:18, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Куда торопишься, снова суетиться? А жить когда?
     
  • 3.41, Аноним (41), 13:50, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Производительность программы не может не иметь значения

    Конечно может. В скриптах производительность не имеет никакого значения.

    > Это буквально время, оно самый дефицитный ресурс. То, что питонисты считают иначе, много о них говорит.

    Ну давай, решай на компилируемом языке те задачи, для которых спользуется скрипты на коленке. Потом посчитаем, сколько ты угрохал на это время, лол. А заодно и сколько сэкономил быстродействием своей программы. Дефицитный ресурс, ага.

     
  • 3.51, User (??), 14:37, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Время _программиста_ дефицитный ресурс.
    А cpu time для огромного количества задач не то, чтобы "значения не имеет" - но где-то около.
     

  • 1.7, funny.falcon (?), 09:46, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    В 3.14 free threading уже не особо и замедляет. Явный прогресс!
     
  • 1.10, Аноним (10), 09:56, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Python лучше всех - доля рынка эта вещь упрямая!
     
     
  • 2.15, Аноним (14), 10:47, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Доля рынка языков для непрограммистов.
     
     
  • 3.29, Аноним (29), 12:08, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для неОпрограммистов
     
  • 2.18, Shellpeck (?), 11:09, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Миллиарды мух не могут ошибаться...
    То, что не могло бы появиться без таких проектов лучше бы и не появлялись.
     
     
  • 3.42, Аноним (41), 13:54, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Миллиарды мух не могут ошибаться...

    Годы идут, а опеннетные эксперты все про "миллиарды мух"...

    > То, что не могло бы появиться без таких проектов лучше бы и не появлялись.

    Ну да, выкидываем все научные рассчеты и ML, чтобы не ломать картину мира опеннетного эксперта.

     
  • 3.47, Аноним (44), 14:24, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > все научные рассчеты

    под капотом имеют библиотеки на C и Fortran, используя сабжа только как интерфейс для ввода-вывода данных. Не в укор сабжу - многие другие научные проекты поступают так же.

     

  • 1.12, Аноним (12), 10:22, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что кстати мешает питону официально перейти на PyPy?
     
     
  • 2.13, Аноним (5), 10:24, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А что кстати мешает питону официально перейти на PyPy?

    То, что он хорош только в попугаеметрах.

     
     
  • 3.26, Аноним (26), 11:47, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А чем плох в реальных задачах?
     
     
  • 4.27, Аноним (5), 11:53, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А чем плох в реальных задачах?

    Все минусы жита, плохая поддержка в существующем коде, потенциальные баги.

     
     
  • 5.28, Аноним (26), 12:06, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержка и баги это следствие малой пользовательской базы и малого количества разработчиков. А вот минусы jit в студию.  
     
     
  • 6.31, Аноним (5), 12:20, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    code Номер объекта SCP-JIT Класс объекта Евклид Особые условия содержания SC... большой текст свёрнут, показать
     
  • 4.52, User (??), 14:40, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Жрет дофига памяти (Которая - в отличие от CPU - не то, чтобы "хорошо разделяемый" ресурс) и "не дает"\"дает незначительную" прибавку к производительности - и задачи у тебя сильно не все cpu bound, и не весь тот cpu на hot path обрабатывается pure python кодом...
     
  • 2.16, Аноним (16), 11:04, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ограниченная область применения
     
  • 2.30, Аноним (29), 12:14, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сделано не ими.
    И PyPy, решая ту же проблему, не нуждается во всяких LLVM.
     

  • 1.19, vitalif (ok), 11:09, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну то есть ничего особо не поменялось.)
     
  • 1.25, Аноним (25), 11:47, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А где вы видели быстрых питонов?
     
     
  • 2.33, Аноним (29), 12:29, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У кроликов ;)
     

  • 1.32, Аноним (29), 12:26, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я на графиках на другое обратил внимание. При прочих равных, производительность разных Питонов на MacOS несколько выше, чем на Linux. Darwin же основан на микроядре Mach? Значит, расхожее мнение о худшей производительности микроядерных ОС - миф?
    Лично мне, это добавило надежд в отношении производительности Hurd.
     
     
  • 2.36, Аноним (36), 12:54, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Странный вывод.
    Автор тестил на том что было, а было у него 13th Gen Intel(R) Core(TM) i5-1340P (он об этом написал в комментах своего блога) и Apple M2. Отсюда и разница.
     

  • 1.34, Аноним (34), 12:42, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Лучший Python это Go!
     
  • 1.35, User (??), 12:50, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Традиционное фибоначчи-в-вакууме, ага.
    Нет бы - ну не знаю - какую fastapi\django'у по контейнерам с разными версиями интерпретатора подсобрать-да-нагрузить...
     
     
  • 2.37, Аноним (36), 12:59, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы что? Чтобы ловить сайд эффекты производительности docker/podman, fastapi, django и какого-нибудь gunicorn? А потом делать неверные выводы?
    В том то и суть, чтобы все это исключить.
     
     
  • 3.39, User (??), 13:12, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Чтобы что? Чтобы ловить сайд эффекты производительности docker/podman, fastapi, django
    > и какого-нибудь gunicorn? А потом делать неверные выводы?
    > В том то и суть, чтобы все это исключить.

    Ну меня очень радуют "верные выводы" сделанные в тестах того же pypy - но очень огорчает несовпадение этих выводов с реальностью примерно во всех наблюдаемых вариантах практического использования.

     

  • 1.38, Аноним (38), 13:09, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стандарт и жЫд не сильно отличаются, а кто-то мне втирал за скорость :)
     
  • 1.43, Аноним (-), 14:06, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > автор нескольких книг по Python-фреймворкам SQLAlchemy и Flask,
    > опубликовал результаты тестирования

    ...очередного удвоения надоев на тему того как именно питон не тормозит :)

     
  • 1.46, Витюшка (?), 14:24, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Больше всего мне здесь нравится график Rust. Которого почти не видно.
     
     
  • 2.49, Аноним (44), 14:30, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Rust обогнали CPython 3.14 в первом тесте в ... 69.82 раз, а во втором тесте в ... 36.15 раз

    Это удивительно - компилируемая программа оказалась быстрее интерпретируемого скрипта.

     

  • 1.48, Аноним (44), 14:27, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > (глубокая рекурсия)

    обычно заканчивается переполнением стека.

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру