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: 원문 보기