Оптимізація продуктивності в 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.