CPython JIT 컴파일러 2년의 회고: 현주소, 아쉬운 점, 그리고 미래

22 hours ago 5

CPython의 JIT(Just-In-Time) 컴파일러 개발에 2년 이상 참여한 개발자의 솔직한 회고와 분석입니다.
이 글은 CPython의 JIT 컴파일러, 특히 최적화(optimizer) 부분에 핵심적으로 기여한 개발자가 지난 2~3년간의 경험을 바탕으로 프로젝트의 현황을 공유한 내용입니다.
긍정적인 점: 커뮤니티 중심의 성장과 교육

  • 커뮤니티 구축: 초기에는 소수의 개발자가 프로젝트를 이끌었지만, 현재는 마이크로소프트의 Faster CPython 팀 해체에도 불구하고 커뮤니티 중심으로 운영되고 있습니다. Savannah, Tomáš, Diego 등 새로운 핵심 기여자들이 합류했으며, 이는 JIT 프로젝트의 장기적인 지속 가능성을 위한 의도적인 노력이었습니다.
  • 교육 가능한 JIT: JIT는 컴파일러 전문 지식이 없는 새로운 기여자들도 쉽게 배우고 기여할 수 있도록 설계되었습니다. 예를 들어, '트레이싱 JIT' 방식을 채택한 것은 복잡한 전체 제어 흐름 그래프가 아닌 단일 기본 블록의 정적 분석만으로도 이해가 가능하게 하여 진입 장벽을 낮췄습니다.
    아쉬운 점: 성능과 잘못된 언론 보도
  • 성능 문제: 솔직하게 말해 CPython 3.13의 JIT는 느립니다. 최신 컴파일러(Clang 20)로 빌드하면 JIT가 인터프리터보다 느린 경우가 많으며, 구형 컴파일러(GCC 11)를 사용해야만 비로소 비슷한 성능을 보입니다. 3.14 버전 역시 새로운 기여자들을 교육하고 기존 타입 분석을 확장하는 데 집중했기 때문에, 획기적인 성능 향상은 없었습니다. 저자는 단기적인 성능 향상보다 장기적인 인재 양성이 더 올바른 선택이었다고 믿습니다.
  • 부정확한 언론 보도: 초기에 언론에서 JIT가 인터프리터보다 "2-9% 빠르다"고 보도했지만, 이는 사실과 다릅니다. 이 수치는 실제 CPython 인터프리터가 아닌, JIT의 중간 표현(IR)을 실행하는 매우 느린 '티어 2 인터프리터'와 비교한 결과였습니다. 이로 인해 사용자들은 JIT에 대한 잘못된 기대를 갖게 되었고, 실제로는 성능 저하를 겪는 경우가 많아 저자는 큰 좌절감을 느꼈다고 합니다.
    결론 및 미래 전망
    저자는 JIT에 대해 여전히 희망적입니다. 강력한 커뮤니티가 구축되었고, 현재 여러 최적화 작업이 동시에 진행되고 있습니다. 이러한 노력들이 3.14 버전에서 벤치마크 기하 평균 기준 한 자릿수 퍼센트의 속도 향상을 가져올 것으로 기대하고 있습니다.
    저자는 "만약 정말 '추악한(ugly)' 문제가 있었다면, 더 이상 JIT 작업을 하지 않았을 것"이라고 말하며, 커뮤니티의 힘으로 JIT가 계속 발전할 것이라는 긍정적인 전망으로 글을 마무리합니다.

Read Entire Article