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

Нова версія 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.

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

Експериментальна LLM-модель OpenAI досягла рівня переможця Міжнародної математичної олімпіади

Експериментальна модель OpenAI досягла рівня золотої медалі на Міжнародній математичній олімпіаді (IMO), вирішивши п'ять із…

21.07.2025

JetBrains переводить всі продукти IntelliJ IDEA на єдиний інсталятор

Компанія JetBrains повідомила, що всі програмні продукти серії IntelliJ IDEA відтепер переходять на єдиний уніфікований…

21.07.2025

Українські кіберфахівці викрили намагання росіян використати LLM-модель для атак на держустанови

Команда реагування на комп'ютерні надзвичайні ситуації України (CERT-UA) розкрила деталі фішингової кампанії, спрямованої на поширення…

21.07.2025

Hugging Face представляє AnyCoder — безкоштовний інструмент для веб-розробки без знання мов програмування

Платформа Hugging Face представляє AnyCoder — середовище для розробки веб-додатків з відкритим кодом. Новий інструмент,…

21.07.2025

Intel припинила 10-річний проект розробки власного дистрибутиву Linux

Компанія Intel оголосила про згортання проекту Clear Linux, робота над яким тривала 10 років. Метою…

21.07.2025

Програміст створив браузерний емулятор першої операційної системи Apple Lisa OS

Розробник Ендрю Ярос продемонстрував веб-емулятор оригінальної операційної системи Lisa OS, яка є першою графічною ОС…

18.07.2025