分岐予測器に、分岐をたどる可能性を伝えることは可能ですか?
2023-08-16 05:46:39
質問
はっきりさせておきたいのですが、私は移植性を求めているわけではないので、特定のボックスに私を縛り付けるようなソリューションでもかまいません。
基本的に、99% の時間で true と評価される if 文があり、パフォーマンスの最後のクロックをすべて削り取ろうとしているのですが、ある種のコンパイラー コマンド (GCC 4.1.2 と x86 ISA を使用、それが重要なら) を発行して、分岐予測装置にその分岐に対してキャッシュするように指示できますか?
どのように解決するのですか?
はい。 http://kerneltrap.org/node/4705
は
__builtin_expect
は gcc (バージョン >= 2.96) が提供する方法です。 プログラマが分岐予測情報を示すために 予測情報を という方法です。の戻り値は__builtin_expect
の戻り値は最初の引数(整数でなければならない)である。 に渡されます。
if (__builtin_expect (x, 0))
foo ();
[This] would indicate that we do not expect to call `foo', since we
expect `x' to be zero.
関連
-
C 構造体定義エラー: '['トークンの前に一次式があることが予想される
-
[解決済み] MIPSのネストされたForループと配列の使用
-
[解決済み] Xcode - 警告。C99 では関数の暗黙の宣言は無効です。
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] .soファイル内のシンボルを一覧表示する方法
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み] Linuxカーネルのprocess/unlikelyマクロはどのように動作し、どのような利点があるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
警告:代入がキャストなしで整数からポインタを作成する場合の修正方法に関する警告
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?
-
[解決済み] Linuxカーネルのprocess/unlikelyマクロはどのように動作し、どのような利点があるのでしょうか?
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?
-
[解決済み] GCCのif else文における__builtin_expectの利点は何ですか?