Python 3.11 성능 개선 체감 후기
배경
10월 24일 Python 3.11 정식 릴리스를 앞두고 RC2 버전을 프로젝트에 적용해봤다. 공식 문서에서 3.10 대비 평균 25% 빠르다고 하는데, 실무 코드에서도 체감될지 궁금했다.
테스트 환경
- 기존: Python 3.10.7
- 신규: Python 3.11.0rc2
- 대상: API 서버 (FastAPI), 데이터 처리 스크립트
결과
FastAPI 기반 API 서버의 응답 시간을 측정했다. JSON 직렬화가 많은 엔드포인트에서 15~20% 개선이 있었다.
# 대량 데이터 직렬화 테스트
import json
import time
data = [{"id": i, "name": f"user_{i}"} for i in range(10000)]
start = time.perf_counter()
for _ in range(100):
json.dumps(data)
end = time.perf_counter()
print(f"Elapsed: {end - start:.3f}s")
# 3.10: 2.431s
# 3.11: 2.089s (14% 개선)
데이터 처리 스크립트는 더 큰 차이가 났다. 반복문과 딕셔너리 연산이 많은 코드에서 30% 가까이 빨라졌다.
# 딕셔너리 집약적 작업
def process_data(items):
result = {}
for item in items:
key = item['category']
if key not in result:
result[key] = []
result[key].append(item['value'])
return result
# 100만 건 처리
# 3.10: 4.2초
# 3.11: 2.9초 (31% 개선)
주의사항
일부 C extension 라이브러리가 아직 3.11을 공식 지원하지 않았다. psycopg2는 문제없었지만, pandas 1.5.0 이상이 필요했다. 프로덕션 적용은 생태계 안정화를 좀 더 지켜본 후 진행할 예정이다.
정리
체감 가능한 성능 향상이 있었다. 특히 순수 Python 코드 비중이 높을수록 효과가 컸다. 11월쯤 주요 라이브러리 지원이 안정되면 단계적으로 마이그레이션 시작할 계획이다.