Оптимизация производительности в Python 3.11

Share
Share
Send

Python 3.11 будет на 10%-60% быстрее, чем Python 3.10. В среднем прирост производительности составит 25%. За счет чего Python станет быстрее?

Быстрый запуск

Python использует папку __pycache__ чтобы кешировать модули для быстрой загрузки. Если ранее в Python 3.10 процесс исполнения модуля из кеша занимал 3 шага, то в Python 3.11 удалось сократить этот процесс до одного шага.

Теперь запуск интерпретатора станет на 10-15% быстрее, что очень важно для небольших программ.

Быстрое исполнение кода

Ускорили процесс вызова Python-функций за счет:

  • повторного использования выделенной памяти на стеке;
  • сокращения количества аллокаций памяти;
  • минимизации потребляемой памяти на вызов функции (избавились от лишней отладочной информации).

Ускоренная работа рекурсивных функций за счет удаления избыточных промежуточных вызовов внутри интерпретатора.

Адаптивная специализация типов в интерпретаторе. Несмотря на то, что Python — язык с динамической типизаций, во многих случаях функции работают всегда со значениями одних и тех же типов. Это называется стабильность типов. Если во время выполнения кода интерпретатор заметит, что в каком-то фрагменте кода присутствует стабильность типов, то интерпретатор подменит этот фрагмент кода на специализированый код, который работает быстрее с конкретными типами.

Примеры некоторых типовых конструкций и прироста производительности в Python 3.11:

КодОписаниеУскорение
x+x; x*x; x-x; Сумма, произведение и вычитание для стандартных типов int, float, str. 10%
a[i] Получение значение по индексу в list, tuple, dict. 10-25%
f(arg) Вызов типичных встроенных в Си функций, таких как len, str, сразу вызывают Си-код, минуя интерпретатор. 20%

Подробное описание технологии: PEP 659 – Specializing Adaptive Interpreter.

Самое важное, что чтобы воспользоваться этими преимуществами не нужно переписывать код. Достаточно просто сменить интерпретатор на версию 3.11.

Напомним, что официальный релиз версии Python 3.11 запланирован на 3 октября 2022 года.

Загрузить Python 3.11 до его официального выхода можно со страницы пререлизов.

Источник: What’s New In Python 3.11.

Надежный Python

Присоединись к культуре надежного программирования на Python! Новости, события, мнения, обновления библиотек Python на одном сайте.