そんなことを思い出させる動画の紹介を忘れていました。
branchless programming in C++ CppCon
自分が書いた本の宣伝に来ただけかと思わせて、なかなか鋭い考察を繰り広げます。
C++とRustで実行速度の比較をして、ループ展開最適化がされてるとかされてないとか、自分で書けもしない逆アセンブラ結果を開陳して、ワーキャー騒いでいた方々にぜひとも眺めてほしい内容ですね。
ただ、分岐予測についてはP4(ペルソナフォーではない)や、netburstアーキテクチャなどのしたり顔の解説などをご記憶の向きにとっては、既視感のある話ではあります。
それと10年以上前から、ループ部分がL1/L2キャッシュのに収まるかどうか問題、など、アセンブル結果の実行ステップ数の比較(おお、これは「ダイナミックステップ」を使うべき場面)だけでは、実世界の現象をとらえられない頓珍漢な状況になることをふまえると、もやもやしますね。
ただまぁ、「無駄に手作業で分岐の最適化とかやるなよ」というアドヴァイスは傾聴に値するといえるかもしれません。