Рубріки: Новини

Нова версія Python буде до 60% швидше: подробиці

Анастасія Пономарьова

Автори Python  поділилися тим, які особливості матиме нова версія мови програмування. Головна з них — прискорення процесу написання коду, пишуть у документах на офіційному сайті Python.

Швидкий запуск

Python 3.11 буде на 10-60% швидше ніж Python 3.10. У середньому розробники виміряли прискорення у 1,25 рази на стандартному наборі тестів. Почасти це стало можливим завдяки швидшому запуску. Python кешує байт-код у каталозі __pycache__, щоб прискорити завантаження модулів.

Раніше у версії 3.10 виконання модуля Python виглядало так:

Read __pycache__ -> Unmarshal -> Heap allocated code object -> Evaluate

У Python 3.11 основні модулі, необхідні для запуску, «заморожені». Це означає, що й об’єкти коду (і байт-код) статично розподіляються інтерпретатором. Це скорочує кроки у процесі виконання модуля:

Statically allocated code object -> Evaluate

Запуск інтерпретатора стане на 10-15% швидшим.

Швидке середовище виконання

Фрейми Python створюються щоразу, коли викликається функція Python, і містять інформацію про її виконання. Їх вирішили оптимізувати:

  • спрощено процес створення стекового кадру;
  • уникається виділення пам’яті за рахунок багаторазового повторного використання простору кадру в стеку C;
  • фрейм тепер містить лише необхідну інформацію, без додаткових відомостей про налагодження та керування пам’яттю.

Об’єкти кадрів у старому стилі тепер створюються лише за запитом відладчиків або функцій самоаналізу Python, а для більшої частини коду користувача об’єкти кадру взагалі не створюються. В результаті майже всі виклики функції Python значно прискорилися.

Також оптимізовано вбудовані виклики функцій Python. У версії 3.11, коли CPython виявляє код, що викликає іншу функцію Python, він встановлює новий кадр і переходить до нового коду всередині цього кадру. Це дозволяє повністю уникнути виклику функції інтерпретації C.

Ілюстрація

Також з’явиться спеціалізований адаптивний інтерпретатор PEP 659 – одна з ключових частин швидшого проекту CPython. Суть – прискорення за рахунок спеціалізації до 60%.

Байт-код CPython містить безліч інструкцій, що представляють високорівневі операції, і їхня спеціалізація тільки виграє. Приклади включають CALL, LOAD_ATTR, LOAD_GLOBALта BINARY_ADD.

Введення «родини» спеціалізованих інструкцій для кожної з них забезпечить ефективну спеціалізацію, оскільки кожна нова інструкція спеціалізована для одного завдання. Кожне сімейство включатиме «адаптивну» інструкцію, яка підтримує лічильник і намагається спеціалізуватися, коли цей лічильник досягає нуля.

Що кажуть айтівці

Програмісти не надто розраховують на суперприскорення роботи мови — своєю думкою вони поділилися на Reddit .

“У статті згадується 25% як середнє прискорення (на їх тестах). Це здається набагато кориснішим числом. Слід зазначити, що вони також сказали, що не очікують на збільшення споживання пам’яті вище 20%, що все ще здається досить значним”, — пише користувач padraig_oh.

Інші коментатори виявилися ще менш оптимістичними.

“Я впевнений, що є певні речі, які вони не оптимізували у мові, і тому програми, в яких ці речі є вузькими місцями, матимуть поліпшення продуктивності майже на 0%”, — вважає Korlus.

“Ви неправильно зрозуміли, це не від 10% до 60%. Це 10% мінус 60%. Оновлення робить ваші програми на -50% швидше”, — пожартував Jansencheng.

Останні статті

SET University пропонує військовим та їх родинам безплатну магістратуру за 4 спеціальностями

Некомерційний навчальний заклад SET University запускає стипендійну програму за рядом напрямків. Українці та українки можуть…

29.04.2024

Від РЕБ до «плащів-невидимок»: за рік в рамках Brave1 створили 1 671 інноваційну розробку

За рік в рамках defense-tech кластеру Brave1 963 розробники створили 1 671 інноваційну розробку —…

29.04.2024

Треба «дешева» робоча сила: Google повністю звільнила команду Python в США

Корпорація Google звільнила всю команду Python в США. Про це стало відомо з публікації Social.coop…

29.04.2024

Українські школярі перемогли на міжнародному ШІ-хакатоні зі застосунком для вивчення жестової мови

Команда з ліцею КПІ PL of KPI Igor Sikorsky перемогла на міжнародному хакатоні зі штучного…

29.04.2024

Більше 50% Go i Ruby розробників з досвідом 3+ роки найняли на $5000. PHP — на самому дні

Більше половини Go i Ruby розробників з досвідом 3+ роки найняли на $5000 або більше.…

26.04.2024

Програмісти намагалися втекти з України в Молдову, щоб влаштуватись на роботу

Прикордонники недалеко від с. Кучурган Одеської області затримали двох програмістів, які намагалися втекти з України…

26.04.2024