Техника оптимизации под линуха

       

Разворот циклов


Микропроцессоры с конвейерной архитектурой (а к таковым относятся все современные x86-процессоры), плохо приспособлены для работы с циклами. Для достижения наивысшей производительности процессору необходим достаточно протяженный участок "трассы выполнения", свободный от ветвлений. Компактные циклы вида for(a=0;a<n;a++)*dst++= *src++; исполняются очень медленно и для увеличения быстродействия приходится прибегать к их развороту (unrolling).

Под "разворотом" в общем случае понимается многократное дублирование цикла, которое реализуется приблизительно так:

for(i=1; i<n;i+)

      k += (n % i);



Содержание раздела