Добрый день.Обращение с разворачиваемым контуром
Я хотел бы спросить за вклад в уловках, чтобы обрабатывать развернутые циклы объедков, с оговоркой, что петли достаточно малы, 1-3 раза разворачиванием фактора, например:
EG. учитывая разворачивания фактор B
int i = 0;
for (; i < N-N%B; i += B) {
...
}
// remainder
for (; i < N; ++i) {
...
}
если В 2, я могу сделать следующее:
// remainder
if (N%2) {
....
}
Но что это хороший способ справиться с B>2
Трудно видеть зачем нужен трюк, вы цикл N/B раз, остаток - N% B. Обычно вы оставляете это до генератора кода, он уже знает, как разворачивать циклы. –
Ну, всегда есть * [устройство Даффа] (http://en.wikipedia.org/wiki/Duff's_device) *, но в коде нет ничего плохого. –
На C или на любом языке? Предложенные инструкции могут быть приятными для этого на некоторых языках ассемблера. – harold