Rubyはとにかく遅い。
綺麗なコードは書けるが、遅い。
だから、@hoge等でとにかくキャッシュをしている!

と言う人にお勧めのコードです。
インスタンスオブジェクトのメソッドをキャッシュするコードを作りました。

使い方は簡単で、キャッシュしたいメソッドに以下のように書くだけです。
def hoge
  # 何かの処理
end
instance_cache :hoge
このようにすればhogeメソッドがインスタンスの中にキャッシュされます。
何度も呼び出されて、なおかつ重いメソッドに対して有効です。(ただし、中身でevalを使っているので本当に早くしたい処理には使えません。)
def hoge
  return @hoge if @hoge
  # 何かの処理
  return @hoge = hogehoge
end
このようなコードを書いている人に有効です。
また、引数がある場合は以下のように記載します。
def hoge(foo)
  # 何かの処理
end
instance_cache :hoge, "foo", :foo
第二引数には、実際に渡される引数を定義してください。第三引数は任意です。fooの値によってキャッシュ値を変えたい場合はこちらを定義してください。

def hoge(foo = "test", foo2)
  # 何かの処理
end
instance_cache :hoge, "foo=\"test\", foo2", foo2
foo2の値に依存したキャッシュだけを行う場合の書き方。

ポイントはメソッドを定義した後に「instance_cache」を定義する事です。

また、コードを見れば分かると思いますが以下のような事も出来ます。
・特定のインスタンスではキャッシュをさせない。
・特定のインスタンスではプリミティブ型(Rubyにはプリミティブ型は無いので、一般的にそう思われるもの)だけをキャッシュさせる。
・メソッドの途中で一部の処理をキャッシュさせる。


このコードは僕がかなり愛用しているコードです。
良かったら使ってください。