[Yarv-devel] Efficient method dispatch (Re: VM Speedup Tech.)
MAEDA Atusi
maeda-yarv @ atusi.org
2004年 2月 9日 (月) 14:03:49 EST
"K.Sasada" <ko1 at namikilab.tuat.ac.jp> writes:
> あと、現在クラスごとに持っているメソッドテーブルも、セレクタごとに持た
> せたらどうかなぁ、とか。1メソッド検索に表一つしか使わないから、キャッシ
> ュの効率が上がったり、しないかなぁ、大きいと。あと、でたらめなメソッドを
> 呼んだとき、でたらめだと直ぐにわかって処理が速くなったり(嬉しくない)。
クラスがメソッドを持たないとすると、どうやってlookupするんでしょう。
クラスの継承関係をトポロジカルソートで全順序にしておいて、セレクタごと
のテーブル内では一番leafのクラスから順に並べておくとか?
あと、メソッドテーブルはキャッシュじゃないですよね。効率って?
> 99% 当たるようなキャッシュがあれば、通常メソッド検索を凝る必要も無いの
> か。
限度はありますが…
ミス率が1/10なら10倍遅くても引き合うでしょうね。
> > (c)エントリはグローバルな配列で、table[cache_word]で取り出す。エントリ
> > は使い回す。ヒットの判定はクラスとセレクタ両方の比較。
> > …ハッシュ表の高速化。
>
> が楽そうですね。今の枠組みにすっと入りそうです。
> 現状のヒット率の再調査はやっぱり要りそうですねぇ。
これだと(CISCOと同じく)メモリの量を定数で抑えられますしね。
あと、今のハッシュ表でもそうですけど、ヒット率を上げる工夫をする余地は
あるかもです。ミスした時に何回か(2回とか)プローブする(疑似セットアソシ
アティブ) とか。(c)だと4回とか8回とかやってもヒット時の処理は遅くなら
ないのが良い。
前田敦司
Yarv-devel メーリングリストの案内