1: Устройство Duffs - это особая модификация разворота цикла. Что такое разворот цикла? Если у вас есть операция для выполнения N раз в цикле, вы можете торговать размером программы для скорости, выполняя цикл N / n раз, а затем в петле, вставляя (разматывая) код цикла n раз, например. заменяя:
for (int i=0; i<N; i++) {
// [The loop code...]
}
с
for (int i=0; i<N/n; i++) {
// [The loop code...]
// [The loop code...]
// [The loop code...]
...
// [The loop code...] // n times!
}
Это отлично работает, если N% n == 0 - нет необходимости в Duff! Если это не так, вам придется обрабатывать остаток - это боль.
2: Как устройство Duffs отличается от этого стандартного цикла? Устройство Duffs - это всего лишь умный способ борьбы с циклами циклов останова, когда N% n! = 0. Весь do / while выполняет N / n число раз в соответствии со стандартным циклом (поскольку применяется случай 0). При последнем прохождении цикла («N / n + 1'-й раз) случай срабатывает, и мы переходим в случай N% n и запускаем код цикла« остальное »количество раз.