피드로 돌아가기
Dev.toBackend
원문 읽기
런타임 해석을 빌드 타임 컴파일로 전환하여 Zod 검증 속도 최대 194배 향상
Compile Zod (30x faster Zod validation)
AI 요약
Context
Zod의 기본 동작 방식인 Tree-walking Interpreter 구조로 인한 런타임 오버헤드 발생. 매 호출마다 스키마를 재해석하며 발생하는 빈번한 메모리 할당과 Dynamic Dispatch가 성능 병목 지점으로 작용함.
Technical Solution
- Build-time Compilation 도입을 통한 런타임 스키마 해석 과정 제거
- 스키마 구조를 분석하여 최적화된 정적 Boolean 표현식의 Fast Path 생성
- 유효성 검사 실패 시에만 에러를 생성하는 Lazy Error Collection 구조 설계
- Bundler Plugin 형태의 구현으로 소스 코드 수정 없는 투명한 최적화 제공
- new Function 및 eval 제거를 통한 CSP(Content-Security-Policy) 제약 해결
- 모듈 로드 시점에 스키마를 한 번만 생성하는 Hoisting 기법 적용
Impact
- 단일 호출 비용: ~16,700ns에서 ~14ns로 획기적 단축
- Medium Object(Valid) 처리량: 2.4M $\rightarrow$ 10.3M ops/s (4.3배 향상)
- Medium Object(Invalid) 처리량: 80K $\rightarrow$ 15.5M ops/s (194배 향상)
- Large Object(100 keys) 처리량: 19K $\rightarrow$ 1.4M ops/s (73배 향상)
실천 포인트
- 런타임에 반복되는 데이터 구조 해석 비용이 높은지 검토 - 성능 최적화와 개발자 경험(DX)의 충돌 시, 빌드 타임 툴링을 통한 자동화 방안 고려 - 에러 메시지 생성과 같은 고비용 작업의 지연 실행(Lazy Evaluation) 적용 가능성 확인 - CSP 환경에서 eval 기반의 JIT 최적화가 비활성화되는지 점검