2

私はジレンマに陥っています.VMのループのためのよりパフォーマンスの高いオプションは何でしょうか:

オプション 1 - 命令関数のインラインを強制し、switch に計算された goto を使用して、そのラベルの命令の呼び出し (効果的にインライン化されたコード) に移動します... または...

オプション 2 - それぞれが関数を指している関数ポインターのルックアップ配列を使用しfastcall、命令がインデックスを決定します。

基本的に、ジャンプアドレスとインラインコードを含むルックアップテーブルまたはfastcall関数アドレスを含むルックアップテーブルのどちらが良いか. はい、私は知っています、どちらも事実上単なるメモリアドレスであり、前後にジャンプしますfastcallが、パラメーターにレジスタを使用することを余儀なくされたとしても、レジスタスペースが不足している場合、一部のデータがスタックにプッシュされる可能性があると思います.

コンパイラはGCCです。

4

1 に答える 1