Ускорение доступа к глобальным переменным в Python 3.8
О том, как грядущая версия Питона стала ещё чуточку быстрее.
На днях в грядущую версию 3.8 было влито изменение, реализующее кеширование для кодов операций.
В изменении bpo-26219 кеширование стали использовать для операции
Теперь доступ к глобальным переменным (включая «изкоробочные» — builtin) осуществляется процентов на 40 быстрее. Таким образом, скорость доступа к глобальным уже можно сравнивать со скоростью доступа к локальным (впрочем, локальные всё равно остаются немного быстрее).
Вероятно в будущем кеш может быть использован также для операций
За реализацию следует благодарить Юрия и Инаду.
В изменении bpo-26219 кеширование стали использовать для операции
LOAD_GLOBAL
, которая используется при доступе к глобальным переменным. Теперь доступ к глобальным переменным (включая «изкоробочные» — builtin) осуществляется процентов на 40 быстрее. Таким образом, скорость доступа к глобальным уже можно сравнивать со скоростью доступа к локальным (впрочем, локальные всё равно остаются немного быстрее).
На заметку
Оценить эффективность использования кеша можно задав
OPCACHE_STATS=1
при сборке интерпретатора. После этого в консоль будет выводится информация об утилизации кеша и количестве объектов в нём.Вероятно в будущем кеш может быть использован также для операций
LOAD_METHOD
(обращение к методу) и LOAD_ATTR
(обращение к атрибуту).За реализацию следует благодарить Юрия и Инаду.
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.