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