lodash memoize

memoize

基本的な説明

関数の計算結果をキャッシュしてくれる。 メモ化する

使い方

var fibonacci = _.memoize(function(n) {
  return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
});

fibonacci(10);

関数の結果をキャッシュしてくれるので、重い処理も高速化される可能性がある。

最初にnに10が入る

  • fibonacci(9) が計算される(この時のn-2にあたるfibonacci(8)はまだ実行されない)
  • fibonacci(9)が実行されるときに n-1にあたる、fibonacci(8)が実行される この時のn-2であるfibonacci(7)はまだ実行されない。
  • fibonacci(8) が実行される
    • その関数内でfibonacci(7)が実行され
    • その関数内でfibonacci(6)が実行されってどんどんつながって。
    • それ以降はキャッシュにのった関数の結果が戻されるってこと

めっちゃ基礎で今更感あるけどmemo