Python 3.12의 목표: 보다 효율적인 성능!

王林
풀어 주다: 2023-04-22 14:43:09
앞으로
1697명이 탐색했습니다.

Python 3.12 目标:还可以更快!

출시 계획에 따르면 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"를 번역한 것입니다. 먼저 살펴보겠습니다!

  • 작성자: Mark Shannon
  • 번역자: Pea Flower Cat @Python Cat
  • 영어: https://github.com/faster-cpython/ideas/wiki/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: https://peps.python.org/pep-0684
  • PEP-554: https://peps.python.org/pep-0554

Python 3.12 目标:还可以更快!

PEP-684는 하나를 제안했습니다. 해결책은 모든 전역 상태가 스레드로부터 안전하고 각 하위 인터프리터의 전역 인터프리터 잠금으로 이동되도록 하는 것입니다.

Python 3.12 目标:还可以更快!


PEP-554는 Python이 하위 인터프리터(현재는 C API 기능만 해당)를 생성하여 진정한 다중 스레드 병렬 처리를 달성하는 솔루션을 제안합니다.

  • Python Cat 참고: PEP-554는 Python 3.8-3.9 버전을 목표로 2017년 초에 제안되었지만 역효과를 냈습니다. 2019년 초에는 "파이썬 GIL이 죽었나요?"라는 기사도 번역했습니다. 정육점 칼이 휘두르니 잠시 날아가도록 하세요~~

더 전문화

어떤 바이트코드가 전문화로 가장 많은 혜택을 받을지 분석했고, 남은 고수익 개선 사항은 3.12에서 완료할 계획입니다.

​https://www.php.cn/link/7392ea4ca76ad2fb4c9c3b6a5c6e31e3​

Python 3.12 目标:还可以更快!

더 작은 객체 구조

Python 객체 구조의 크기를 줄일 수 있는 기회는 많습니다. 자주 사용되므로 전체 메모리 사용량뿐만 아니라 캐시 일관성에도 도움이 됩니다. 우리는 3.12에서 가장 유망한 아이디어 중 일부를 구현할 계획입니다.

이전 버전과의 호환성과 성능 사이에는 몇 가지 절충점이 있으며 합의를 구축하기 위해 PEP를 제안해야 할 수도 있습니다.

Python 3.12 目标:还可以更快!

메모리 관리 오버헤드 감소

객체의 크기를 줄일 뿐만 아니라 레이아웃을 더욱 규칙적으로 만들 것입니다.

이는 메모리 할당 및 할당 해제를 최적화할 뿐만 아니라 GC 및 재할당 중 객체 탐색 속도도 향상시킵니다.

API 안정성

앞서 언급한 프로젝트 외에도 개발팀은 CPython 코드베이스의 전반적인 품질도 향상시킬 예정입니다.

  • 다양한 컴파일 단계의 결합을 줄임으로써 컴파일러의 유지 관리 및 테스트가 더 쉬워졌습니다.
  • C 언어 수준에서 CPython 테스트 제품군의 코드 적용 범위를 적극적으로 모니터링하고 개선합니다.
  • 보다 대표적인 실제 로드 테스트를 포함하도록 Python 성능 벤치마크 제품군을 개선합니다.
  • CPython 문제 및 PR, 특히 성능과 관련된 문제를 지원합니다.
  • 표준 벤치마크를 위한 머신을 추가하고 macOS 및 Windows에 대한 테스트 결과를 추가했습니다.
  • Python 커널을 많이 사용하는 주요 프로젝트와 계속 협력하여 CPython 인터프리터의 변경 사항에 적응하도록 돕습니다.

위 내용은 Python 3.12의 목표: 보다 효율적인 성능!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿