Да.Точная версия не имеет большого значения.Все эти оптимизации сводятся к тому, чтобы свести к минимуму использование языковых функций с семантикой, которая обеспечивает простую и эффективную реализацию для общего случая (который волнует только интерпретатор, в то время как JIT-компилятор может генерировать лучший код для конкретных случаев).В частности:
- Поиск атрибутов по-прежнему идет по довольно причудливому алгоритму, например, выполняется поиск по хэш-таблицам (эти являются амортизируемыми O (1), но большие O - не все), повышаясьдлинные (ну, не так много в случае встроенных) цепочек наследования и вызова других дескрипторов (свойств, получения связанных методов).Поиск переменных (особенно локальных, см. Ниже) очень прост в сравнении и требует меньше инструкций байт-кода, если только рассматриваемый объект не находится на вершине стека.
- Локальные переменные все еще могут перечисляться во время компиляции (что позволяетнесколько эффективная реализация с использованием стека), в то время как глобальные переменные могут все еще добавляться и удаляться любым пользователем, имеющим ссылку на объект модуля, и даже динамически используя строку (для них требуется использование хеш-таблицы).