From: Takaaki Tateishi Date: 2002-01-17T20:42:42+09:00 Subject: [ruby-dev:15704] Re: method cache At Thu, 17 Jan 2002 18:23:40 +0900, matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > |その場合,定義したメソッドのIDがキャッシュされている可能性があ > |る場合にのみ全探索してエントリを削除するというように変更すると, > |多少スピードが上がるようです. > > 基本的なアイディアは評価できますが、CACHE_DAMAGEはクリアして > はいけないような気がします(たまたま同じスロットを使うIDも > DAMAGEを受けているかもしれないので)。 気づいてませんでした.確かにまずいですね. rb_clear_cache_by_id()については,cache_damageでカウントしておいて, 2度以上damageを受ける(同じスロットが異なるidで使われる可能性がある) とundamageできないようにしておくというのはどうでしょう? そして,rb_clear_cache()の場合には全部undamageします. この方法でsample/test.rbを実行しても,ほとんど実行時間は変わらないよ うです. # 他の方法としてはハッシュですべてのdamageを受けたIDを覚えておくとい # うくらいでしょうか… -- Takaaki Tateishi