はコードを考える:ループアンローリング&最適化
for (int i = 0; i < n; ++i)
{
A(i) ;
B(i) ;
C(i) ;
}
と最適化バージョン:
for (int i = 0; i < (n - 2); i+=3)
{
A(i)
A(i+1)
A(i+2)
B(i)
B(i+1)
B(i+2)
C(i)
C(i+1)
C(i+2)
}
何かが私には明らかではない:優れているの?私は、他のバージョンを使用してより速く動作するものは見えません。私はここに何かを逃していますか
私が見るすべては、各命令が前の命令に依存していることである は私が前の命令が次々に開始するためにフィニッシュすることを待つ必要があることを意味...
おかげ
どの言語ですか? – Bytemain
ウィキペディアには、ループアンローリングのアイデアがあります。http://en.wikipedia.org/wiki/Loop_unwinding –
一般的に、これらは同等ではありません。 A(i)でなければならない。 B(i); C(i); A(i + 1); B(i + 1); – gnasher729