Algorithm
(python) forloop 와 list comprehension 의 차이
jssvs
2024. 4. 11. 02:01
반응형
1.성능 비교를 위한 예제코드
import time
import dis
SIZE=10000000
def func_forloop():
start_time = time.time()
factor = 1
bucket = []
for i in range(SIZE):
bucket.append(i * factor)
print(len(bucket))
end_time = time.time()
print(f"bucket size = {len(bucket)} \nfunc_forloop execution time : {(end_time - start_time)* 1000}ms")
def func_list_comprehension():
start_time = time.time()
factor = 1
bucket =[i * factor for i in range(SIZE)]
end_time = time.time()
print(len(bucket))
print(f"bucket size = {len(bucket)} \nfunc_list_comprehension execution time : {(end_time - start_time)* 1000}ms")
func_forloop()
func_list_comprehension()
dis.dis(func_forloop)
print('--------------------------')
dis.dis(func_list_comprehension)
2.요약
- dis 를 통해 변환된 바이트 코드를 볼 수 있다.
- for loop 는 리스트에 요소를 추가하는 작업을 append method 를 쓰고, list comprehension 은 LIST_APPEND 라는 바이트 코드를 쓴다.
- 인터프리터 모드에서 동작하는 프로그램에서 ListComprehension 에서 바이트를 특별 처리하므로 성능이 빠르다. 구글링해보면 타 블로그에서 컴파일 할 경우 for loop와 성능이 비슷해진다는 실험을 봤다. 따라서 list comprehension 만을 고집할 필요도 없다.
반응형