Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

함수에서 Python 코드가 더 빨리 실행되는 이유는 무엇입니까?

<시간/> <본문>

python 코드가 정상적으로 실행되면 python 함수로 실행하면 후자의 경우 더 빨리 실행되는 것으로 나타났습니다. 함수에서 파이썬 코드가 더 빨리 실행되는 이유를 알고 싶습니다.

일반적으로 파이썬 함수에서 전역 변수보다 지역 변수를 저장하는 것이 더 빠릅니다. 이것은 아래와 같이 설명할 수 있습니다.

로컬/글로벌 변수 저장 시간 외에도 opcode 예측은 함수를 더 빠르게 만듭니다.

CPython은 Python.org에서 다운로드한 원래 Python 구현입니다. 이후의 Python 구현과 구별하고 언어 엔진의 구현을 Python 프로그래밍 언어 자체와 구별하기 위해 CPython이라고 합니다.

CPython은 우연히 C 언어로 구현되었습니다. CPython은 파이썬 코드를 바이트코드로 컴파일하고 평가 루프에서 해당 바이트코드를 해석합니다.

함수가 컴파일될 때 지역 변수는 고정 크기 배열(dict가 아님)에 저장되고 변수 이름은 인덱스에 할당됩니다. 이것은 함수에 지역 변수를 동적으로 추가할 수 없기 때문에 가능합니다. 그런 다음 지역 변수를 검색하는 것은 말 그대로 목록에 대한 포인터 조회와 중요하지 않은 PyObject에 대한 참조 횟수 증가입니다.

이것을 해시 등을 포함하는 진정한 사전 검색인 전역 조회와 비교하십시오. 덧붙여서, 이것이 변수를 전역으로 지정하려는 경우 전역을 지정해야 하는 이유입니다. 범위 내의 변수에 할당한 경우 컴파일러는 사용자가 지시하지 않는 한 해당 액세스에 대해 STORE_FAST를 발행합니다.

그건 그렇고, 글로벌 조회는 여전히 꽤 최적화되어 있습니다. 속성 조회는 정말 느립니다!