Cより{n}倍速い速度
(owen.cafe)- Clangで生成されたCコードのループにある最適化の機会を探る記事
- ループは文字列中の文字に基づいて数値を増減させます。
- 著者はループを再配置し、null終端子の代わりに
'p'と's'の文字に最適化します。 - 著者は算術演算と条件付き移動を使って条件分岐を取り除きます。
- 最適化されたコードは、元のコードと比べて6.73倍という大幅な高速化を達成します。
- 著者はほかの最適化手法も試しますが、コードを遅くすることが分かります。
- ベンチマーク環境には、AMD Ryzen 5 5625U CPUと最新バージョンのClangおよびGCCが含まれます。
- 結論として、アセンブリでの手作業による最適化が、特定のケースでは大きな高速化につながり得ると述べています。
1件のコメント
Hacker Newsの意見
sete/cmov命令を使い、最適化されたアセンブリコードと同等の速度を達成できます。