仮想関数テーブル(vtable)のオーバーヘッドをゼロにする!コンパイル時ポリモーフィズムと奇妙に再帰したテンプレートパターン
オブジェクト指向の代名詞である仮想関数(virtual)による動的ポリモーフィズムは、柔軟で美しい設計を可能にしますが、極限のパフォーマンスが求められるゲーム開発では「隠れたコスト」が存在します。毎フレーム何万回も呼ばれる弾幕やパーティクルにおいて、vtable(仮想関数テーブル)を辿るポインタ間接参照と、コンパイラが関数をインライン展開できないことによる関数呼び出しオーバーヘッドは無視できない負荷となります。本章では、C++98時代からゲームプログラマが愛用してきた伝説の技法【CRTP(Curiously Recurring Template Pattern:奇妙に再帰したテンプレートパターン)】を徹底解剖。仮想関数のオーバーヘッドを1サイクル・1バイトすら残さずコンパイル時に消滅させ、超高速な静的ポリモーフィズムを実現するアーキテクチャを習得します。
JavaScriptを実行すると、ブラウザ内インベーダーゲームエミュレータ、メモリマップ可視化、UMLクラス図、対話型解説、理解度クイズが起動します。