How We Accelerated Transpilation by Compiling SQLGlot with mypyc
Author: Evangelos Danias (Fivetran) | Source: Fivetran Blog | Published: 2026
한 줄 요약
SQLGlot을 mypyc로 C 확장 모듈로 컴파일하여 파싱 5배, 생성 2.5배, 옵티마이저 2~2.5배 속도 향상을 달성했다.
핵심 주장/내용
- mypyc(mypy 기반 트랜스파일러)를 사용해 100개 이상의 모듈을 C 확장으로 컴파일하여 순수 Python 대비 대폭 성능 향상
- Optional 대신 sentinel 토큰을 사용해 None 체크를 제거하고, 네이티브 i64 정수형과 핫 패스 인라이닝(스코프 분석 1.8배)으로 최적화
- 사전 빌드된 dispatch dictionary로 코드 생성 단계에서 6~23% 추가 속도 향상
- mypyc에 5개의 문자열 프리미티브를 기여(str[i] 인덱싱 3.9배 개선)하고, 6개의 컴파일러 버그를 수정
- 순수 Python 패키지와 별도로 선택적
sqlglotc패키지로 배포하여 호환성 유지
주요 수치 / 사실
- 파싱 속도 ~5배 향상
- 코드 생성 속도 ~2.5배 향상
- 옵티마이저
22.5배 향상 - str[i] 인덱싱 프리미티브 3.9배 개선
- dispatch dictionary 적용 시 6~23% 생성 속도 향상
- mypyc 컴파일러 버그 6건 수정, 문자열 프리미티브 5개 기여
관련 위키
Source: 원문 보기