-
[Python] operator 모듈 사용해서 연산 처리 속도 빠르게 하기언어/파이썬 & 장고 2019. 10. 13. 20:44
파이썬에서 문자열을 더하거나 숫자를 곱하는 등의 코딩을 할 때 아래와 같이 연산자를 사용하게 됩니다.
result = 'a' + 'b' result2 = 4 * 5
여기서 파이썬 내부적으로 operator 모듈을 호출하여 처리를 한 다음 사용자에게 반환하게 됩니다.
만약 속도가 정말 중요한 프로그램에서 연산처리를 조금이나마 빠르게 하려면 operator 모듈을 사용하면 됩니다.
아래는 100만번 반복문을 실행하면서 각 값을 곱하는 예제로 수행속도를 확인한 코드입니다.
from functools import reduce import operator import timeit def test1(): return reduce(operator.mul, range(1000000)) def test2(): return reduce(lambda x,y: x*y, range(1000000)) def test3(): def xy(x, y): return x*y return reduce(xy, range(1000000)) def xy2(x, y): return x*y def test4(): return reduce(xy2, range(1000000)) t1 = timeit.timeit('test1()', setup='from __main__ import test1', number=1) t2 = timeit.timeit('test2()', setup='from __main__ import test2', number=1) t3 = timeit.timeit('test3()', setup='from __main__ import test3', number=1) t4 = timeit.timeit('test4()', setup='from __main__ import test4, xy2', number=1) print(t1) print(t2) print(t3) print(t4) # 0.07717441299610073 # 0.1284205199990538 # 0.12985249999474036 # 0.1294196250019013
결과를 보면 operator 모듈의 mul을 사용해 100만번 곱한 결과가 약 60%정도 빠른 것으로 보여집니다.
요약
속도 처리가 아주 중요한 프로그램일 경우, 연산 로직을 짤 때, operator 모듈을 사용하자