enumerate vs. range in process time

lightcat·2022년 8월 8일
0

알고리즘 코딩하다가 간편하게 enumerate를 쓸려다가 이것도 용량이 큰 배열에서는 많이 걸릴까 싶어 range를 쓴적이 있는데, 실제로 enumeraterange의 시간차이가 얼마나 걸리는지 궁금하여 간단하게 코드를 짜보았다.

def enumerate_test():
    size = 100000000
    iter = 10
    l = [n for n in range(size)]

    enumerate_time_list = []
    range_time_list = []
    for iter in range(iter):
        enumerate_start = time.time()
        for idx, val in enumerate(l):
            if idx % 10000 == 0:
                pass
                # print('enumerate idx = {}, val = {}'.format(idx, val))
        enumerate_end = time.time()
        for i in range(len(l)):
            if i % 10000 == 0:
                pass
                # print('range idx = {}, val = {}'.format(i, l[i]))
        range_end = time.time()

        print('enumerate time taking : {}'.format(enumerate_end - enumerate_start))
        print('range time taking : {}'.format(range_end - enumerate_end))
        enumerate_time_list.append(enumerate_end - enumerate_start)
        range_time_list.append(range_end - enumerate_end)

    print('enumerate time avg = {}'.format(sum(enumerate_time_list)/len(enumerate_time_list)))
    print('range time avg = {}'.format(sum(range_time_list)/len(range_time_list)))
================
result
================
size : 1000000
iterate : 100
enumerate time avg = 0.06238986730575562 sec
range time avg = 0.047560834884643556 sec

(print 로직 추가)
size = 100000000
iter = 10
enumerate time avg = 6.2854790687561035 sec
range time avg = 4.6657792091369625 sec

range30%정도 더 빠른것을 볼수 있다.

0개의 댓글

관련 채용 정보