if
ステートメントは分岐予測により依存しており、v-table ルックアップは分岐ターゲット予測により依存しているということを正しく理解していますか? vテーブルに関しては、「分岐予測」はなく、ターゲット予測だけですか?
v-table が CPU によってどのように処理されるかを理解しようとしています。
if
ステートメントは分岐予測により依存しており、v-table ルックアップは分岐ターゲット予測により依存しているということを正しく理解していますか? vテーブルに関しては、「分岐予測」はなく、ターゲット予測だけですか?
v-table が CPU によってどのように処理されるかを理解しようとしています。
分岐予測とは、分岐が成立するかどうかを予測することです。分岐先予測は、分岐先の予測です。これら 2 つのことは独立しており、すべての組み合わせで発生する可能性があります。
これらの例は次のとおりです。
goto
声明break
またはcontinue
ステートメントif/else
(節を飛び越えるためelse
)switch
ステートメント (ジャンプ テーブルにコンパイルされている場合)if
声明switch
ステートメント (一連のif/else
ステートメントにコンパイルされている場合)&&
and||
演算子_?:
演算子if (condition) { obj->VirtualFunctionCall(); }
を条件付き間接ジャンプのようにjne *%eax
最適化して、関数の最後に表示される場合があります。