파이썬 3.16까지 5-10% 더 빠른 자유 스레드 JIT를 위한 계획

A Plan for 5-10%* Faster Free-Threaded JIT by Python 3.16

작성자
HackerNews
발행일
2025년 11월 10일

핵심 요약

  • 1 CPython 3.15까지 5%, 3.16까지 10% 더 빠른 JIT 성능을 목표로 하는 개발 계획이 수립되었습니다.
  • 2 트레이스 기록 JIT, 개선된 기계어 코드 생성, 레지스터 할당 및 참조 카운트 제거 등 다양한 최적화가 진행됩니다.
  • 3 Ruby의 ZJIT 및 Ractor 아이디어를 활용하여 기본 자유 스레딩 지원을 구현, 멀티스레드 환경에서의 JIT 활용 가능성을 모색합니다.

도입

ARM이 주최한 Python Core Dev Sprint에서 CPython의 JIT 컴파일러 성능을 3.15 버전까지 5%, 3.16 버전까지 10% 향상시키기 위한 구체적인 계획이 발표되었습니다. 이 목표는 기하 평균치이며, 특정 벤치마크에서는 더 큰 성능 향상을 기대할 수 있습니다. 본 계획은 이전 JIT의 한계를 극복하고 프로덕션 준비를 위한 다양한 최적화 방안을 포함하고 있습니다.

3.15 버전 계획

  • LLVM 21 프로파일링 지원: JIT 프레임 스택 언와인딩을 통해 디버거 및 프로파일러 지원을 강화합니다.

  • 트레이스 기록 JIT: ‘듀얼 디스패치’ 기반의 새로운 JIT 프론트엔드로, 1.5% 성능 향상 및 제너레이터, 사용자 정의 던더를 지원합니다.

  • 기계어 코드 생성 개선: AArch64 최적화 및 분기 반전 기법으로 ‘fall-through’를 증대시켜 1% 속도 향상을 목표합니다.

  • 레지스터 할당/Top-of-Stack 캐싱: CPython 스택 머신의 한계를 극복하기 위한 레지스터 캐싱 구현과 참조 카운트 문제 해결이 과제입니다.

  • 참조 카운트 제거: 데이터 흐름 분석을 통해 참조 카운팅 없는 명령어로 변환하여 레지스터 할당 효율성을 높입니다.

  • 상수 전파 강화: PyPy hint 아이디어를 활용, 상수 풀을 통해 JIT의 상수 전파 최적화를 확대합니다.

  • 기본 자유 스레딩 지원: Ruby ZJIT 및 Ractor 개념을 도입, _CHECK_VALIDITY로 스레드 안전성을 확보하고 새 스레드 생성 시 JIT 코드를 무효화합니다.

결론

CPython JIT의 성능 향상 계획은 파이썬 3.15 및 3.16에서 중요한 진전을 가져올 것으로 예상됩니다. 특히, 트레이스 기록 JIT, 개선된 기계어 코드 생성, 레지스터 할당, 참조 카운트 제거 및 기본 자유 스레딩 지원은 CPython의 전반적인 성능과 다중 스레드 환경에서의 효율성을 크게 개선할 것입니다. 이러한 노력은 파이썬의 미래를 위한 중요한 단계이며, 커뮤니티의 적극적인 기여가 지속적인 발전에 필수적입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!