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

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

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024