bJou 파서의 초고속 구현 (100만 LOC/s 목표)
Source
Evernote/Inbox/bJou.md
Summary
bJou 언어의 자체 호스팅(Self-hosting) 컴파일러 파서가 초당 100만 줄(LOC) 이상의 구문 분석 속도를 목표로 하고 있다. 초기 구현은 수동 작성된 재귀 하강 파서와 합 타입(Sum types) 기반 AST를 사용했으나 속도가 부족했다. 이를 위해 스레드 풀(Thread Pool)을 도입하여 파일별 병렬 처리를 최적화했고, 프로파일링을 통해 할당 및 스레드 데이터 집계 병목 현상을 분석 중이다. 최종 목표는 기존 부트스트랩 컴파일러(C++)보다 빠른 성능을 달성하는 것이다.
Key Points
- 목표: 초당 100만 줄(LOC) 이상의 구문 분석 속도 달성 (실제 테스트 환경 기준 clang ~5만, go fmt ~20만, 기존 bJou ~30만 LOC/s)
- 구현 방식: 수동 작성 재귀 하강 파서, 인라인 토큰화, 합 타입(Sum types) 기반 고정 크기 AST 노드 사용
- 병렬화 전략: 파일 단위 병렬 처리를 위해 스레드 풀(Thread Pool) 도입하여 하드웨어 스레드 활용도 극대화
- 성능 개선: 초기 구현 대비 스레드 풀 적용으로 2배 이상 속도 향상, 프로파일링을 통한 할당 및 데이터 집계 병목 분석 진행 중