출시 계획에 따르면 Python 3.11.0은 2022년 10월 24일에 출시될 예정입니다.
테스트에 따르면 3.11은 3.10에 비해 10-60% 성능이 향상됩니다. 이 성과는 주로 "Shannon 프로젝트"라고도 알려진 "Faster CPython" 프로젝트에 기인합니다.
버전 3.11은 Python의 속도 향상을 위한 흥미로운 시작입니다. 3.12에는 더 많은 조치가 적용될 예정입니다.
다음 기사는 "Shannon Project"의 "Python 3.12 Goals"를 번역한 것입니다. 먼저 살펴보겠습니다!
이 글의 내용 변경될 수 있으며 실제 버전이 우선합니다!
이 글은 Faster CPython이 3.12에서 구현할 예정인 주요 내용을 요약한 것입니다.
Python 3.11에서 속도를 향상시키는 주요 방법은 개별 opcode를 더 빠른 상황에 맞는 opcode(적응형 전문화 opcode)로 바꾸는 것입니다. 다음으로 큰 개선은 여러 opcode의 작동을 최적화하는 것입니다.
이를 위해 기존의 높은 수준 opcode 중 다수가 버전 번호 및 참조 횟수를 확인하는 데 사용되는 것과 같은 낮은 수준의 opcode로 대체됩니다. 이러한 단순한 opcode는 최적화하기가 더 쉽습니다. 예를 들어 중복 참조 계산 작업을 제거할 수 있습니다.
이러한 하위 수준 opcode는 (CPython 및 타사 JIT 프로젝트 모두에서) 기계 코드 생성에 적합한 지침 세트도 제공합니다.
이를 위해 선언적 설명을 기반으로 인터프리터 루프가 생성됩니다.
이를 통해 인터프리터 루프를 특정 관련 함수(mark_stacks, stack_효과 등)와 동기화된 상태로 유지함으로써 발생하는 일부 버그를 줄일 수 있으며 인터프리터 루프에 대한 더 큰 변경 사항을 실험할 수도 있습니다.
Python에는 현재 프로세스당 전역 해석기 잠금(GIL)이 있어 다중 스레드 병렬 처리를 방해합니다.
PEP-684는 하나를 제안했습니다. 해결책은 모든 전역 상태가 스레드로부터 안전하고 각 하위 인터프리터의 전역 인터프리터 잠금으로 이동되도록 하는 것입니다.
PEP-554는 Python이 하위 인터프리터(현재는 C API 기능만 해당)를 생성하여 진정한 다중 스레드 병렬 처리를 달성하는 솔루션을 제안합니다.
어떤 바이트코드가 전문화로 가장 많은 혜택을 받을지 분석했고, 남은 고수익 개선 사항은 3.12에서 완료할 계획입니다.
https://www.php.cn/link/7392ea4ca76ad2fb4c9c3b6a5c6e31e3
Python 객체 구조의 크기를 줄일 수 있는 기회는 많습니다. 자주 사용되므로 전체 메모리 사용량뿐만 아니라 캐시 일관성에도 도움이 됩니다. 우리는 3.12에서 가장 유망한 아이디어 중 일부를 구현할 계획입니다.
이전 버전과의 호환성과 성능 사이에는 몇 가지 절충점이 있으며 합의를 구축하기 위해 PEP를 제안해야 할 수도 있습니다.
객체의 크기를 줄일 뿐만 아니라 레이아웃을 더욱 규칙적으로 만들 것입니다.
이는 메모리 할당 및 할당 해제를 최적화할 뿐만 아니라 GC 및 재할당 중 객체 탐색 속도도 향상시킵니다.
앞서 언급한 프로젝트 외에도 개발팀은 CPython 코드베이스의 전반적인 품질도 향상시킬 예정입니다.
위 내용은 Python 3.12의 목표: 보다 효율적인 성능!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!