함수 캡슐화를 통한 코드 실행 속도 향상
파이썬 코드를 실행할 때, 함수 내에 포함된 코드가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!