Рубріки: Новости

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023