Оптимизация производительности в Python 3.11
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.