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