仮想関数テーブル 比較、およびその他の方法

仮想関数テーブル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/11/25 17:30 UTC 版)

比較、およびその他の方法

vtable は一般的に動的なディスパッチを実現するための、性能上のよいトレードオフであるが、たとえば二分木ディスパッチ[2]といった代替の方法も存在する。

しかし、vtable は特殊な "this" パラメータでは single dispatch のみ考慮しており、ディスパッチの際全てのパラメータの型が考慮される多重ディスパッチCommon LispJuliaDylan)とは異なる。

vtables はまた、コンパイル時に単一の配列にメソッドを配置するため、ディスパッチが既知のメソッドのセットに限定されている場合のみうまく動作する。これはダック・タイピング言語(SmalltalkPythonJavaScript、あるいは C++ のコンパイル時のテンプレート機構)とは対照的である。

上記の一つまたは両方をサポートする言語は、ディスパッチをハッシュテーブルの文字列検索や同等の手段で行うことが多い。ディスパッチを高速化する様々な方法があり(たとえば、メソッドの名前を intern 化やトークン化する、検索のキャッシュ、JITコンパイルなど)、ディスパッチの時間は全体的な処理時間にそれほどの影響を与えない。それでもなお、vtable の検索の方が明らかに高速である。また vtable は実装やデバッグが簡単で、文字列のハッシュテーブルよりも"Cの精神"に近い。

関連項目

参考文献


注釈

  1. ^ g++ の -fdump-class-hierarchy オプションで、仮想関数テーブルを出力して手動でチェックすることができる。
  2. ^ AIX の VisualAge XlC コンパイラでは -qdump_class_hierarchy を用いてクラスの階層構造と仮想関数テーブルのレイアウトを出力することができる。

出典

  1. ^ Driesen, Karel and Holzle, Urs, "The Direct Cost of Virtual Function Calls in C++", OOPSLA 1996
  2. ^ Zendra, Olivier and Driesen, Karel, Stress-testing Control Structures for Dynamic Dispatch in Java", Pp. 105?118, Proceedings of the USENIX 2nd Java Virtual Machine Research and Technology Symposium, 2002 (JVM '02)


「仮想関数テーブル」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「仮想関数テーブル」の関連用語











仮想関数テーブルのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



仮想関数テーブルのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの仮想関数テーブル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS