ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 모듈을 사용하자

    댓글