2009年10月 6日

Programming | Memoize

Young risk taker.: [Ruby] MemoizationのRubyによる高機能な実装Memoizeを作った。

Django のソースを見ていたときに、memoize() というデコレータ的な関数が使われているのを見つけ、「memoize」ってどういう意味だろう?と調べてみた。

Wikipedia に Memoization というエントリーでやたら詳しく書かれているけど、日本語では上記のページに簡潔にまとめられている。日本語では「メモ化」と呼ぶみたい。

「キャッシュ」の概念と何が違うのか今一つ分からないけど、関数の呼び出し結果をキャッシュすることを「Memoization」と呼ぶのかな?

memoize の関数自体の実装は簡単で、Python ではデコレータとして実装するのが一般的。
Django AMF のある関数に適用してみたら、かなり速くなるケースがあった。プロセスをまたいでキャッシュさせられるように memcached とか使ってキャッシュするのはやり過ぎなのか判断に迷うところ。


関係ないけど、Python のデコレータをクラスとして実装できることは知らなかった。

Posted by otsuka : 23:02 | Comment (0) | Trackback (0)
Comment









名前、アドレスを登録しますか?