私は最近、Michael Abrash のThe Zen of Assembly Language (1990 年から) を手に取り、分岐 (ジャンプ) が発生する場合など、命令のプリフェッチが常に有利であるとは限らないというセクションを読んでいました。これは、プリフェッチされたすべての命令が実行対象ではなくなったため、さらに命令をフェッチする必要があるためです。
これは、Andre LaMothe による別の古い本、 Tricks of the Game Programming Gurusの最適化を思い出させました。彼は、条件ステートメントを設定するときに、最も頻繁に (または期待される) パスを最初に置くことを提案しています。
例えば:
if (booleanThatIsMostLikelyToBeTrue)
{
// ...expected code
// also the code that would've been prefetched
}
else
{
// ...exceptional or less likely code
}
私の質問は次のとおりです。
1) LaMothe の最適化は、これを念頭に置いて提案されましたか? (本はもう持っていません)
2) このタイプの最適化は、現代のマシンで今でも価値のあるプログラミングの習慣ですか? (多分、プリフェッチは以前とは異なる方法で処理されますか?)