den Code Gegeben:Schleifenentrollen & Optimierung
for (int i = 0; i < n; ++i)
{
A(i) ;
B(i) ;
C(i) ;
}
und die Optimierung Version:
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)
}
Etwas ist mir nicht klar: was ist besser? Ich kann nichts sehen, das mit der anderen Version schneller funktioniert. Fehle ich hier etwas?
Alles, was ich sehe, ist, dass jeder Befehl auf der vorherige Instruktion abhängig, was bedeutete, dass ich, dass der vorherige Befehl würde, um warten müssen, beendet die einen nach dem Start ...
Dank
Welche Sprache? – Bytemain
Wikipedia hat einen guten Artikel über die Idee hinter Loop Enrolling für das, was es wert ist: http://en.wikipedia.org/wiki/Loop_unwinding –
Im Allgemeinen sind diese nicht gleichwertig. Sollte A (i) sein; Bi); C (i); A (i + 1); B (i + 1); usw. – gnasher729