소요시간 배틀 : 내장함수 vs 조건부 표현식

마늘맨·2024년 6월 24일
0

가능한 한 빠른 코드를 위해 삽질을 하던 나!!
문득 min(a, b)b if a>b else b는 실행 속도의 차이가 있는지 궁금해졌다...

결론부터 말하면 최솟값을 구할 땐 조건부 표현식을 사용한 방법이 유의미하게 빠르다.


1. 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()조건부 표현식을 사용한 방법보다 느릴까?? 얼른 알아보자!!


2. 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()가 근소하게 앞섰다.

오늘 하루도 파이팅!

profile
안녕! 😊

2개의 댓글

comment-user-thumbnail
2024년 8월 14일

와 대박이네요 내장함수가 더 빠르다고 생각했는데 bb 좋은 정보 얻고 갑니다!

1개의 답글