Иллюстрация
Создатели 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, и содержат информацию о ее выполнении. Их решили оптимизировать:
Объекты фреймов в старом стиле теперь создаются только по запросу отладчиков или функций самоанализа 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), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…