給予代碼:循環展開和優化
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 2012-04-09 22:00:44
維基百科有一篇很好的文章,介紹循環展開後的想法,以瞭解它的價值:http://en.wikipedia.org/wiki/Loop_unwinding – 2012-04-09 22:02:00
一般而言,這些並不等同。應該是A(i);雙); C(I); A(I + 1); B(I + 1);等等。 – gnasher729 2014-06-10 21:43:15