Language/Python

[Python] 메서드 지역변수로 할당으로 time complexity 줄이기

ooeunz 2019. 10. 11. 14:55
반응형

반복문 안에서 메서드를 호출할 때 그냥 호출하는 것보다, 반복문에 들어가기 전에 메서드를 미리 지역변수로 할당해놓고 반목 문에서 지역변수로 저장된 메서드를 호출하면 빠르게 동작한다.
위의 예제에선 list.pop을 했을 때보다 list_pop 변수에 list.pop 메서드를 저장 후 list_pop을 호출했더니 시간이 약 3/5까지 줄어들었습니다. 알고리즘이나 코드 플로우를 바꾸지 않고 시간을 줄일 필요가 있을 때 사용하면 좋을 것 같다.

저 위의 예시를 예로 들면, 첫번째 test_list.pop 하기 전에 print(locals())를 하면 pop 메서드가 지역변수에 없는 것을 알 수 있다. 그 말은 pop 메서드를 가져오려면 List 클래스의 pop 메서드가 담겨있는 메모리의 위치까지 접근해서 가져와야 함을 의미할 것이다. 하지만 test_list.pop을 test_list_pop으로 지역변수화 시키면 이 메서드를 호출할 때 지역변수 locals() 안에 메서드가 있는 것을 확인하고 바로 가져와서 쓸 수 있다. 반복문에서 매번 모듈에 저장되어 있는 메서드의 위치까지 접근해서 가져오는 오버헤드가 반복되다 보니 시간이 더 걸리는 것 같다.

 

[출처] 김태영님

반응형