Адаптивный интерпретатор ускоряет часто повторяющиеся динамические операции через специализацию инструкций по наблюдаемым данным. Семантика языка сохраняется: при изменении условий используется общий путь.
Почему в Python 3.11+ появился адаптивный интерпретатор (PEP 659) и как он меняет байт-код на лету?
Адаптивный интерпретатор ускоряет часто повторяющиеся динамические операции через специализацию инструкций по наблюдаемым данным. Семантика языка сохраняется: при изменении условий используется общий путь.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Адаптивный интерпретатор ускоряет часто повторяющиеся динамические операции через специализацию инструкций по наблюдаемым данным. Семантика языка сохраняется: при изменении условий используется общий путь.
Вместо полного универсальной обработки операции каждый раз CPython может проверять ожидаемый тип и выполнять более короткую специализированную инструкцию. Кеши рядом с байт-кодом хранят нужные сведения, счётчики управляют адаптацией. Это полезно, потому что реальные участки кода часто работают с повторяющимися типами. Специализация не равна статической типизации и не гарантирует ускорения любого кода; конкретные инструкции зависят от версии.
Источник: peps.python.org.