컴파일러 성능의 엔진: Dense Arena Interning

Dense Arena Interning: The Engine of Compiler Performance

컴파일러는 소스 코드의 이름과 구조를 식별하고 비교하는 데 많은 시간을 소비합니다. 이 글은 문자열과 구조를 생성 시점에 밀집된 정수(Dense ID)로 변환하는 'Dense Arena Interner' 구현을 소개합니다. 해싱 비용을 렉싱 단계에서 선불로 지불함으로써 이후 모든 단계(파싱, 타입 체크, 최적화)는 O(1) 배열 인덱싱과 포인터 비교만으로 동작합니다. 아레나 할당자를 통한 안정적인 메모리 관리, Slice와 InternResult 구조체, 해시맵과의 통합, 그리고 Dense ID를 활용한 평면 배열 심볼 테이블과 캐시 지역성 향상까지, 컴파일러 성능 최적화의 핵심을 다룹니다.

인터닝은 비용을 한 단계로 옮기고, 이후에는 거의 상수 시간 비교를 위해 표준 핸들을 재사용합니다.

이 날의 다른 글

2026-07-16