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