Зачем рантаймам нужны «карты» объектов: как ускорить доступ к атрибутам

Objects, attributes, maps, oh my

В динамических языках вроде Python, Ruby и JavaScript объекты удобно представлять как хеш-таблицу имён и значений, но каждое обращение к атрибуту тогда требует хеширования и лишних загрузок из памяти. Автор разбирает «карты» (они же shapes и hidden classes) на основе реализации CF Bolz-Tereick: неизменяемое дерево раскладок объекта плюс inline-кэш, который запоминает смещение атрибута и проверяет его по указателю на карту. Порядок добавления атрибутов влияет на производительность.

Разница между попаданием в кэш и промахом на горячем пути может достигать двукратной.

Ещё за этот день

2026-10-23