함수에 코드를 캡슐화하면 Python 성능이 향상되는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-11 02:21:02
원래의
887명이 탐색했습니다.

Why Does Encapsulating Code in Functions Increase Python Performance?

함수를 사용한 Python 코드 성능 최적화

Python의 함수 내에서 특정 코드를 실행하면 실행 속도가 크게 향상되는 것으로 관찰되었습니다. 이 이상한 동작 뒤에 있는 이유를 조사해 보겠습니다.

처음에는 for 루프가 함수 내에 캡슐화되었습니다.

def main():
    for i in xrange(10**8):
        pass
main()
로그인 후 복사

이 코드는 2초 이내에 완료되는 훌륭한 성능을 보여줍니다. 그러나 for 루프를 함수 내에 넣지 않고 독립적으로 실행하면

for i in xrange(10**8):
    pass
로그인 후 복사

실행 시간이 4초 이상으로 치솟습니다. 이러한 불일치 뒤에 숨겨진 수수께끼를 풀기 위해서는 Python 인터프리터가 생성한 바이트코드를 조사해야 합니다.

함수의 바이트코드를 조사하면 변수 i가 STORE_FAST opcode를 사용하여 할당된다는 것을 알 수 있습니다.

LOAD_FAST               0 (i)
로그인 후 복사

최상위 수준에서 for 루프가 실행되면 STORE_NAME opcode를 사용하여 변수 i가 할당됩니다.

STORE_NAME               1 (i)
로그인 후 복사

결정적으로 STORE_FAST가 STORE_NAME보다 효율적인 작업이라는 것이 확립되었습니다. . 이러한 효율성은 i가 함수 내의 지역 변수(STORE_FAST 사용)일 때 스택 프레임에 저장된다는 사실에서 비롯됩니다. 반대로 i가 전역 변수(STORE_NAME 사용)인 경우 전역 변수 사전에 저장되어야 합니다.

바이트코드를 더 자세히 검사하려면 dis 모듈을 활용할 수 있습니다. 기능을 직접 분해하려면 dis 모듈을 사용할 수 있습니다. 그러나 최상위 수준에서 실행되는 코드를 디스어셈블리하려면 내장된 컴파일을 활용해야 합니다.

기본 바이트코드 작업을 이해함으로써 Python의 기능을 활용하여 코드 실행 속도를 효과적으로 최적화할 수 있습니다.

위 내용은 함수에 코드를 캡슐화하면 Python 성능이 향상되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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