알고리즘 코딩하다가 간편하게 enumerate
를 쓸려다가 이것도 용량이 큰 배열에서는 많이 걸릴까 싶어 range
를 쓴적이 있는데, 실제로 enumerate
와 range
의 시간차이가 얼마나 걸리는지 궁금하여 간단하게 코드를 짜보았다.
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
range
가 30%
정도 더 빠른것을 볼수 있다.