[Python] list 할당의 속도차

변도진·2025년 10월 14일

Python

목록 보기
15/16
import time

N = 10**7

t0 = time.time()
lst = []
for i in range(N):
    lst.append(i)
print("append:", time.time() - t0)

t0 = time.time()
lst = [i for i in range(N)]
print("comprehension:", time.time() - t0)

t0 = time.time()
lst = list(range(N))
print("list(iterable):", time.time() - t0)
append: 0.561028242111206
comprehension: 0.3148791790008545
list(iterable): 0.15317654609680176

append

list의 할당된 크기를 초과할 때마다 list의 메모리를 재할당 후 복사해야되서 느리다.

comprehension

list의 크기를 한번에 할당하고 최적화가 잘 되어있음, 그러나 for를 돌기에 인터프리터에서 실행됨

list

list의 method는 C코드로 구현되어 인터프리터(bytecode) 실행이 아닌 C코드가 실행됨

여담

그러나 list의 크기를 파악하지 못하는 경우 conprehension이 빠를 수 있음(최적화 차이)

profile
낚시하고 싶다.

0개의 댓글