게으른연산
-
파이썬의 range는 게으른 연산(lazy evaluation)이다.개발 흉내 2022. 2. 21. 17:56
range 는 항상 같은 메모리를 차지한다. range 는 lazy evaluation 이기 때문에 범위가 커진다고 메모리가 커지진 않는다. >>> from sys import getsizeof >>> getsizeof(range(1_000_000_000_000_000)) 48정수값을 천조개를 미리 연산해서 갖고 있으려면 메모리가 적어도 1PB 는 있어야하지만 lazy 하게 연산하기 때문에 항상 일정한 메모리를 차지하게 된다. 1_000_000_000_000_000 in range(1_000_000_000_000_001) 는 빠르다. range 에 포함되어있는지를 계산하는 in 연산은 매우 빠르다. >>> from timeit import timeit >>> expr = """ ... 1_000_000_..