가능한 한 빠른 코드를 위해 삽질을 하던 나!!
문득 min(a, b)
와 b if a>b else b
는 실행 속도의 차이가 있는지 궁금해졌다...
결론부터 말하면 최솟값을 구할 땐 조건부 표현식을 사용한 방법
이 유의미하게 빠르다.
min()
vs b if a>b else b
그 이유는 min()
호출에 추가적인 오버헤드가 있기 때문이라고 한다...
a = 1
b = 2
def min_func():
return min(a, b)
def if_else_func():
return b if a>b else b
min_time = timeit.timeit(min_func, number=10000000)
if_else_time = timeit.timeit(if_else_func, number=10000000)
print(f'min() takes {min_time} seconds')
print(f'if_else takes {if_else_time} seconds')
min() takes 0.7920509000000493 seconds
if_else takes 0.3424482000000353 seconds
말도안돼... 그렇다면 abs()
도 조건부 표현식을 사용한 방법
보다 느릴까?? 얼른 알아보자!!
abs()
vs a if a>0 else -a
import timeit
# Define the values
a = 10000
# Define the functions
def abs_func():
return abs(a)
def if_else_func():
return a if a > 0 else -a
# Measure the execution time
abs_time = timeit.timeit(abs_func, number=100000000)
if_else_time = timeit.timeit(if_else_func, number=100000000)
print(f'abs() takes {abs_time} seconds')
print(f'if_else takes {if_else_time} seconds')
abs() takes 3.2973313000002236 seconds
if_else takes 3.3521763999997347 seconds
충격적인 사실!! 믿기지 않아 여러 번 돌려봐도 내장 함수abs()
가 조건부 표현식을 사용한 방법보다 근소하게 빨랐다...
혹시나 abs()
를 1억 번 실행하고 나니 컴퓨터가 힘들었던 걸까봐 실행 순서를 바꿔보아도 여전히 abs()
가 근소하게 앞섰다.
오늘 하루도 파이팅!
와 대박이네요 내장함수가 더 빠르다고 생각했는데 bb 좋은 정보 얻고 갑니다!