>  기사  >  백엔드 개발  >  함수 캡슐화가 Python 코드 실행 속도를 향상시키는 이유는 무엇입니까?

함수 캡슐화가 Python 코드 실행 속도를 향상시키는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-13 07:29:02877검색

Why Does Function Encapsulation Enhance Python Code Execution Speed?

함수 캡슐화를 통한 코드 실행 속도 향상

파이썬 코드를 실행할 때, 함수 내에 포함된 코드가 Python 코드보다 훨씬 빠르게 실행되는 것을 알 수 있습니다. 동일한 코드가 함수 외부에서 실행됩니다. 이 현상을 조사하기 위해 간단한 코드 조각을 분석해 보겠습니다.

def main():
    for i in xrange(10**8):
        pass
main()

이 코드는 main() 함수 내에서 실행될 때 약 1.8초 안에 실행됩니다. 그러나 for 루프가 함수 외부에 배치되면 실행 시간이 약 4.5초로 늘어납니다.

for i in xrange(10**8):
    pass

이러한 성능 차이의 이유는 Python이 코드를 컴파일하는 방식에 있습니다. 코드가 함수 내에서 실행되면 바이트코드라는 형식으로 컴파일됩니다. 바이트코드는 PVM(Python Virtual Machine)이 원래 Python 코드보다 더 효율적으로 실행하는 일련의 명령입니다.

dis 모듈을 사용하여 코드 조각에 대한 바이트코드를 검사하면 차이점이 드러납니다.

함수 내부:

  2           0 SETUP_LOOP              20 (to 23)
              3 LOAD_GLOBAL              0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_FAST               0 (i)

  3          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               0 (None)
             26 RETURN_VALUE        

함수 외부:

  1           0 SETUP_LOOP              20 (to 23)
              3 LOAD_NAME                0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_NAME               1 (i)

  2          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               2 (None)
             26 RETURN_VALUE        

결정적인 차이점은 16행과 19행의 지침에 있습니다. 함수 내에서 변수 i는 지역 변수에 최적화된 STORE_FAST를 사용하여 저장됩니다. 그러나 함수 외부에서는 i가 STORE_NAME을 사용하여 저장되는데, 이는 전역 변수와 관련되어 있기 때문에 계산 집약적입니다.

따라서 함수 내에 코드를 캡슐화하여 변수 저장 및 검색을 최적화합니다. 더 빠른 실행 시간을 제공합니다.

위 내용은 함수 캡슐화가 Python 코드 실행 속도를 향상시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.