memoize
클로저에서 값은 불면하다. 그렇기에 이런 이상한 일이 가능한 것인데 호출한 함수를 메모리에 올려서 기억시키는 일이다. (memoize: 이전에 계산한 값 자체를 저장하여 프로그램 실행 시간을 빠르게 하는 기술)(defn sleep [x] (Thread/sleep 1000) x) (sleep "Mr.KIM") "Mr.KIM" (sleep "Mr.KIM") "Mr.KIM"당연히 둘다 잘 나올 것이다. 단 3초 뒤에 나오는 것이다. 만약 이 3초가 강제로 잠재운 것이 아니라 오랜 시간 동안 계산해서 얻어내야 하는 값이라면?
(def memo-sleep (memoize sleep)) (memo-sleep "Mr.KIM") "Mr.KIM" (memo-sleep "Mr.KIM") "Mr.KIM"값은 같지만 두번째로 호출 할때 3초를 쉬지않고 바로 일을 한다. 왜냐하면 값을 이미 가지고 있기 때문ㅇ
댓글 없음:
댓글 쓰기