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