- 이번에 공개된 Python 3.14는 지금까지의 CPython 버전 중 가장 빠른 성능을 보임
- 단일 스레드에서는 3.14가 3.13 대비 약 27% 개선을 보였고, JIT 의 성능 향상은 미미하고, Free-threading 인터프리터는 단일 스레드에서 소폭 느림
- 멀티스레드에서는 FT 인터프리터가 GIL 제거 효과로 Fibonacci 3.1배, 버블 정렬 2배 수준의 가속을 보여 CPU 집약 멀티스레드에 유효함
- 결론적으로 3.14가 CPython 중 가장 빠르며, 3.11 이상 권장, Pypy는 여전히 매우 빠르며 JIT은 성숙도 향상 필요
벤치마크 전제와 한계
- Python 3.14의 공식 출시 직후 여러 버전의 Python 및 다른 언어와의 성능 벤치마크 결과를 공유함
- 이 테스트는 순수 Python 코드만으로 작성된 간단한 재귀(피보나치)와 반복(버블 정렬) 함수로 진행
- 실제 개발 현장에서는 C/C++/Rust 등 네이티브 코드와 섞어 쓰는 경우가 많으므로, 이 결과는 실제 상황에는 1:1 대응하지 않음
테스트 매트릭스
- 테스트 환경
- Python 6가지 버전(3.9~3.14), Pypy, Node.js, Rust 포함
- Python 인터프리터: 표준(Standard), JIT, Free-threading(각각 3.13 이상)
- 테스트 스크립트: 피보나치(fibo.py), 버블정렬(bubble.py)
- 스레드 모드: 단일 스레드, 4 스레드
- 테스트 머신: Linux(Framework i5), macOS(M2)
- Node.js, Rust 버전도 참고 대상으로 함께 비교
테스트 스크립트
-
피보나치(fibo.py): 재귀 구조 사용,
fibo(40)을 각 환경에서 실행 - 버블 정렬(bubble.py): 10,000개의 랜덤 숫자 정렬
- 각 테스트는 3회 반복하여 평균값 산출
- 테스트 코드는 GitHub 저장소에 공개
Benchmark #1: 피보나치(단일 스레드)
- Python 3.14는 3.13 대비 약 27% 향상된 속도(6.59초 vs 8.26초) 기록
- 3.11 버전에서부터 "매우 느림"에서 "그나마 덜 느림"으로 전환됨
- Pypy는 3.14보다 약 5배 빠르며, Node.js와 동급, Rust는 압도적으로 가장 빠름
- Free-threading은 단일 스레드에서 표준 버전보다 여전히 느리지만, 3.14로 오면서 속도 차이가 감소(91% 수준)
JIT, Free-threading 인터프리터
- JIT은 이 재귀 함수 구조에서 체감 성능 향상 없음
- Free-threading은 단일 스레드에서는 오히려 약간 느린 결과
- JIT의 성능 향상 한계는 함수 구조에 따라 다를 수 있음
Benchmark #2: 버블 정렬(단일 스레드)
- Python 3.14가 3.11 대비 근소하게 더 빠르나, 격차는 피보나치보다 작음(3.14: 2.18초, 3.11: 2.48초)
- Pypy는 3.14보다 약 18배 빠름
- JIT은 Linux 환경에서 소폭 빠르기도, macOS에서는 차이가 거의 없음
Benchmark #3: 피보나치(멀티스레드)
- 표준 인터프리터에서는 GIL(Global Interpreter Lock)로 인해 스레드 수를 늘려도 기대만큼 빠르지 않음
- Free-threading 인터프리터(3.14)는 표준 대비 3.1배 빨라짐
- JIT의 영향은 거의 확인되지 않음
- Pypy 결과만 측정 진행됨, Node.js/Rust는 이 테스트에서 비교하지 않음
Benchmark #4: 버블 정렬(멀티스레드)
- Free-threading(3.14 FT)이 표준(3.14) 대비 2배 빠른 결과(특히 CPU 집약 작업에서 장점 부각)
- JIT은 명확한 성능 우위 없음
- Mac의 Free-threading 성능이 눈에 띔
결론
- CPython 3.14가 현존 CPython 중에서 가장 빠른 성능을 보임
- 업그레이드가 어렵다면 3.11 이상 버전 사용 권장
- JIT 인터프리터는 실제로 체감되는 속도 증가는 미미했음
- Free-threading 인터프리터는 멀티스레드 CPU 집약 상황에서 뚜렷한 장점
- Pypy는 압도적으로 빠르며, 추가적인 탐구의 가치가 큼
기타
- 결과는 다양한 환경 변수에 따라 다를 수 있으니, 직접 벤치마크 및 확인 권장
- 자세한 내용 및 코드는 GitHub 저장소 참조 가능