[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:28

From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 17 May 2004 21:17:52 +0900
Subject: [yarv-dev:28] method cache availability

 ささだです。

 日記にも書いてたんですが、いんちきをしてはやくしてみました。


インチキインラインメソッドキャッシュ:ぽりもふぃずむとかまっ
たく無視して、キャッシュが入っていれば、チェックせずに無条件
で利用するようなキャッシュ。一番速い、というか正確に動かない。 
どうやっても、これ以上速いキャッシュは作れないだろう。多分。

tak:

def tak x, y, z
  unless y < x
    z
  else
    tak( tak(x-1, y, z),
         tak(y-1, z, x),
         tak(z-1, x, y))
  end
end

tak(16, 8, 0)


--
インチキキャッシュ適用前:
      user     system      total        real
ruby  2.844000   0.000000   2.844000 (  2.912000)
yarv  1.703000   0.000000   1.703000 (  1.732000)

インチキキャッシュ適用後:
      user     system      total        real
ruby  2.875000   0.000000   2.875000 (  2.910000)
yarv  0.781000   0.000000   0.781000 (  0.787000)

*この評価では、Fixnum + Fixnum などの演算を特殊化していません。



 この規模のプログラムであると、メソッドキャッシュの改善は
ある程度(大きく?)有効であることが示された、ということだ
と思っています。

 もうすこし、どの辺が現状のメソッド探索のボトルネックに
なっているのか見てみようと思いますが。

 多分、CLASS_OF がやっぱり遅いのかなぁ、と思わなくもない
んですが、やってみればわかりますね。まさか、この規模でグロー
バルメソッドキャッシュでミス(追い出し)が発生するとも思えな
いし。

 それとも、ただ単にC関数コールのオーバヘッドかなあ。


-- 
// SASADA Koichi at atdot dot net
//


--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]