
지연 평가(Lazy Evaluation)란 말 그대로 필요할 때까지 값을 계산하지(지연) 않는 전략입니다. 즉 사용되기 전까지 평가하지 않고, 값을 미루는 방법입니다.
지연 평가는 원하는 시점까지 값의 평가를 지연시켜 메모리 사용량을 줄이고, 불필요한 연산을 방지함으로써 성능을 향상시킬 수 있습니다.
지연 평가의 동작원리 전, 비교가 되는(일반적으로 사용되는) 엄격 평가의 동작원리를 살펴보겠습니다.
예를들어 모두 1씩 더한 뒤, 홀수인 값들 중, 앞에서 3개를 추출하는 조건의 경우
위의 경우 총 203번 순회 과정이 진행됩니다.
만약 100개가 아닌 1억개였다면 3개를 추출하기 위해 약 2억번의 과정이 필요합니다.
지연평가의 경우 어떻게 동작하는지 알아보겠습니다.
지연 평가의 경우 1개씩 처리하는 과정으로 진행됩니다.
예를들어 [0,1,2,...99] 가 존재할 경우
위 과정을 통해 앞에서 3개 추출을 위해서는 0요소에 관해 3번(홀수이므로), 1요소에 관해 (2번), 2요소에 관해 3번(홀수이므로), ... 이런식으로 진행됩니다.

따라서 총 15번만 진행되고, 7이후 부터는 원하는 조건의 숫자 3개를 모두 추출했으므로, 불필요한 작업을 진행하지 않습니다.
1억개의 요소를 비교해보도록 하겠습니다.

실제로 엄청난 속도 차이를 확인 할 수 있습니다.