[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 メーリングリストの案内