재귀호출을 할 때, 메모이제이션을 이용하면
프로그램이 사용하는 메모리가 증가하지만,
밴복적인 함수 호출 시
재귀호출 횟수를 줄여 더 빠른 함수 값을 얻을 수 있다.
많은 함수형 프로그램들이 메모이제이션을 쉽게할 수 있도록 함수를 제공하지만(클로저, 그루비 : memoize 제공),
스칼라는 직접적으로 제공하지 않는다.
하지만, 다음과 같은 방법으로 memoize() 를 간단하게 구현할 수 있다.
def memoize[A, B](func: A => B) = new (A => B){
val cache = scala.collection.mutable.Map[A, B]()
def apply(x: A): B = cache.getOrElseUpdate(x, func(x))
}
def hashFunc = memoize(hash)
'컴퓨터공학 > Java Scala' 카테고리의 다른 글
Spark에서 왜 Scala를 써야 하는가..? (0) | 2017.05.12 |
---|---|
Akka project using shadow gradle plugin (0) | 2017.04.23 |
Python glob.glob() to Scala (0) | 2016.11.24 |
Deadlock에 빠지지 않는 다양한 방법 ver. Java (0) | 2016.11.20 |
Java vs C++ (0) | 2013.01.05 |