Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

2010年7月27日のブックマーク (2件)

  • メッセージ送信の最適化:キャッシュ法 - トーフサロン

    Objective-Cコンパイラを作るためにメッセージ送信の最適化について調べたことをとりまとめてみるよシリーズその2。第二回はキャッシュ法についてとりまとめてみます。 キャッシュを使った最適化では、メソッド探索の結果をキャッシュしておき、次回以降のメソッド探索を省略します。キャッシュを配置する位置によって、それぞれ特徴があります。 メソッドキャッシュ メソッドキャッシュは、レシーバクラスとセレクタをキーとしてメソッド表をキャッシュしておく方法です。レシーバクラスとセレクタのポインタ値からハッシュ値を計算し、そのハッシュ値をインデックスとしてメソッド表を調べるのが簡単な実装です。キャッシュがヒットすれば、メソッド探索のコストはハッシュ表の探索と同じになります。 メソッドキャッシュはグローバルなスコープに一つ用意するのが一般的なようです。Rubyでもメソッドキャッシュを使っており(Ruby

    メッセージ送信の最適化:キャッシュ法 - トーフサロン
    muttyu
    muttyu 2010/07/27
  • インライン・メソッド・キャッシュによる動的ディスパッチ高速化(3/3) - @IT

    ■多相的インライン・メソッド・キャッシュ(polymorphic inline method caching) スタブベース・ディスパッチのほかに、.NETの世界でお目にかかるインライン・メソッド・キャッシュといえば、DLR(Dynamic Language Runtime)での採用例が挙げられる。DLRのインライン・メソッド・キャッシュはパフォーマンス上重要で、頻発するobject型への処理に活躍する。この理由は、動的言語ならではの難しさにある。 IronPythonやIronRubyで書かれたプログラム・コードは実行前にDLRの抽象構文木(DLR AST)に変換されるのだが、この段階で現れる型のほとんどはobject型(System.Objectクラス)とせざるを得ない。IronPythonやIronRubyといった動的言語では、コンパイル時に式の型を決めてしまうことが困難であったり不

    muttyu
    muttyu 2010/07/27