Учитывая код:Loop разворачивая и оптимизация
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); С (я); А (г + 1); В (I + 1); и т. д. – gnasher729