해시 테이블 대신 맵으로 객체 속도를 높이는 방법
Objects, attributes, maps, oh my
동적 타입 언어에서 객체 속성을 해시 테이블로 저장하면 매번 해싱과 간접 메모리 접근이 발생해 느리다. CF Bolz-Tereick의 'A Simple Object Model'을 바탕으로, 속성 오프셋을 미리 계산해 두는 불변 맵(shape)과 인라인 캐시를 결합하면 문자열 조회 없이 빠르게 속성에 접근할 수 있다. 맵은 트라이 구조로 공유되며, 속성 추가 순서가 다르면 다른 맵이 되어 캐시 미스가 발생한다.
핫 경로에서 캐시 히트와 캐시 미스의 차이는 2배일 수 있다.