본문으로 건너뛰기

벤치마크

모든 수치는 macOS (Apple Silicon), Node.js v22.17.0 환경에서 3회 측정 중앙값입니다. TypeDoc 0.28.18에 --skipErrorChecking 플래그를 적용했습니다.

실제 프로젝트: es-toolkit (603 파일, 1322 심볼)

es-toolkit을 대상으로 측정했습니다.

측정 항목oxdocTypeDoc 0.28배율
JSON 생성0.24s1.70s7x 빠름
HTML 생성0.25s2.53s10x 빠름
피크 메모리131MB470MB3.6x 적음

실제 프로젝트: radashi (162 파일, 437 심볼)

radashi를 대상으로 측정했습니다.

측정 항목oxdocTypeDoc 0.28배율
JSON 생성0.13s1.12s8.6x 빠름
피크 메모리84MB272MB3.2x 적음

합성 스케일 테스트

파일 수를 늘려가며 측정한 합성 벤치마크입니다. 각 파일에 문서화된 심볼 3개를 포함합니다.

파일 수심볼 수시간메모리처리량
1003000.03s6MB~3,300/s
5001,5000.10s10MB~5,100/s
1,0003,0000.18s6MB~5,700/s
5,00015,0000.81s33MB~6,200/s

성능 차이의 이유

TypeDoc은 파싱에 전체 TypeScript Compiler(tsc)를 사용합니다. --skipErrorChecking을 사용해도 전체 컴파일러 파이프라인을 초기화해야 하므로 ~1초의 고정 오버헤드가 있습니다.

oxdoc은 OXC 파서(Rust NAPI)를 사용하여 구문만 파싱합니다 — 타입 체킹 없이, 네이티브 Rust에서 실행됩니다.

TypeDocoxdoc
파서tsc (JavaScript)OXC (Rust NAPI)
타입 해석완전없음 (시그니처 그대로)
고정 오버헤드~1초~0.05초
파일당 비용~2ms~0.15ms

재현 방법

git clone https://github.com/jiji-hoon96/oxdoc.git
cd oxdoc
pnpm install && pnpm build

# 합성 벤치마크
pnpm bench

# 실제 프로젝트 비교 (TypeDoc 글로벌 설치 필요)
time node dist/cli/index.js generate --format json --output /tmp/oxdoc-out ./path/to/project/src
time npx typedoc --json /tmp/typedoc.json --entryPoints ./path/to/project/src/index.ts --skipErrorChecking