[Backend] JVM warm up / if(kakao)dev2022 에서 JIT의 C1/C2 최적화로 latency 이슈를 해결하는 영상을 봤다.
“파이썬도 JIT 컴파일이 가능할까?”
최근에 @jit 데코레이터가 붙어 있는 걸 본 적은 있지만 그냥 실행 속도 높여주겠거니 하고 넘겼는데 지금은 나도 의문이 들어서 찾아보았다.
항상 느리다는 지적을 받는 파이썬이기에 JIT 컴파일을 이용하고 있을 거라고 생각했다.
하지만 결론적으로는 파이썬의 레퍼런스 버전인 Cpython에서는 JIT 컴파일러를 지원하지는 않는 것으로 확인했다.
내가 예전에 봤던 @jit는 anaconda의 라이브러리인 numba에 있던 것이었다.
파이썬의 기본 인터프리터 Cpython 다음으로 익숙한 이름인 PyPy가 대표적인 JIT 컴파일을 사용한다.
이러한 점을 보면 JIT 컴파일을 지원하지 않을 이유가 없을 것 같다.
근데 왜 지원하지 않는 것일까?
해당 이유를 명확히 알 수는 없지만 조사를 좀 해보며 나름대로 그럴듯하다고 생각했던 이유는 “C로 구현된 Cpython에 JIT 컴파일을 적용하려면 핵심 구현에서의 복잡성이 늘어나 추가적인 문제의 가능성이 있다.” 라는 것이다.
모든 언어에 나름의 장단점이 있고, 지향하는 바가 다르기 때문에 파이썬 진영의 입장에서 보면 속도 향상을 최우선 순위 두어 도입하며 추후 발생할 수 있는 리스크를 가져가야 하는 것은 아니라고 생각한다.
현재 파이썬 프로그램의 장점은 빠른 개발로 쉽게 프로토타입을 구축할 수 있다는 점과 여러 부분 시스템에 연결시키는 글루 코드로써의 역할을 수행할 수 있다는 점이다.
이미 2021년 Python Language Summit에서 파이썬 속도를 높이기 위한 여러 제안이 나왔고, 현재의 제안은 완전한 JIT 구현 대신 적응형 동작을 추가해서 일반적인 특수 상황에서 실행 속도를 높이는 방법이다.
따라서 Summit에서도 이러한 제안을 가지고 가는 것으로 생각된다.
파이썬 진영에서 파이썬 JIT는 당장의 관건이 될만한 포인트가 아닐 것이다.
찾아본 내용 토대로 추측이 난무하는 글을 작성했습니다.
혹시 잘못된 부분이 있어 지적해주신다면 바로 수정하고 다시 알아보겠습니다.
참고 출처
JIT - Just in Time Compiler
Why doesn't CPython has a JIT?
"왜 안 되는 걸까?" 파이썬에서 기대할 수 없는 4가지 기능 개선