Python 3.13 gets a JIT
Tonybaloney
Python에 copy-and-patch JIT가 추가되는 PR이 열렸습니다.( https://github.com/python/cpython/pull/113465 ) 이 PR은 CPython 핵심 개발자인 Brandt Bucher가 올렸는데 현재 리뷰도 거의 끝나고 큰 문제가 없는거 같아서 조만간 머지될 것으로 보입니다.
이 copy-and-patch JIT이 무엇인지를 설명하는 글인데 JIT에 대한 이해도에도 도움이 될만한 글입니다.
인터프리터는 실행할 때마다 opcode라 부르는 바이트 코드 이름을 if 문으로 비교하기 때문에 실행할 때마다 약간의 오버헤드가 발생합니다. 이 오버헤드를 없애기 위해 시퀀스로 코드를 생성하는 것이 JIT인데 이번 PR에 올라온 것은 copy-and-patch PR 입니다.
인터프리터 루프는 해석하고 실행하는 두가지 과정으로 진행되는데 copy-and-patch JIT은 각 명령의 인스트럭션을 복사한 뒤(copy) 바이트 코드의 인수를 채우는(patch) 방식으로 진행됩니다. Python에서 copy-and-patch JIT을 선택한 이유는 일반 Python 사용자가 이를 실행할 일은 없고 CPython을 빌드하고 패키징하는 CI 머신에서 LLVM JIT 도구로만 설치하면 되기 때문입니다.
초기 벤치마크에 따르면 2~9% 정도의 성능 향상이 있었는데 높은 성능은 아니지만 앞으로 이어질 최적화 작업의 첫 단계로 이해하면 된다고 합니다.
https://tonybaloney.github.io/posts/python-gets-a-jit.html
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 1월 27일 오전 3:42