2009年10月 6日
Programming | Memoize
Young risk taker.: [Ruby] MemoizationのRubyによる高機能な実装Memoizeを作った。
Django のソースを見ていたときに、memoize() というデコレータ的な関数が使われているのを見つけ、「memoize」ってどういう意味だろう?と調べてみた。
Wikipedia に Memoization というエントリーでやたら詳しく書かれているけど、日本語では上記のページに簡潔にまとめられている。日本語では「メモ化」と呼ぶみたい。
「キャッシュ」の概念と何が違うのか今一つ分からないけど、関数の呼び出し結果をキャッシュすることを「Memoization」と呼ぶのかな?
memoize の関数自体の実装は簡単で、Python ではデコレータとして実装するのが一般的。
Django AMF のある関数に適用してみたら、かなり速くなるケースがあった。プロセスをまたいでキャッシュさせられるように memcached とか使ってキャッシュするのはやり過ぎなのか判断に迷うところ。
関係ないけど、Python のデコレータをクラスとして実装できることは知らなかった。
Comment