Хотя я не на 100% уверен, что вы просите, вот так ...
Проблема, с которой сталкиваются устройства Даффа, связана с разматыванием петли (как вы, без сомнения, видели в опубликованной вами вики-ссылке). То, к чему это в основном приравнивается, - это оптимизация эффективности во время выполнения по сравнению с объемом памяти. Устройство Даффа имеет дело с последовательным копированием, а не просто со старой проблемой, но является классическим примером того, как можно сделать оптимизацию, уменьшив количество раз, когда сравнение должно выполняться в цикле.
В качестве альтернативного примера, который может облегчить понимание, представьте, что у вас есть массив элементов, которые вы хотите зациклить, и каждый раз добавляйте 1 к ним ... обычно вы можете использовать цикл for и цикл около 100 раз. Это кажется довольно логичным, и, однако ... однако, оптимизация может быть выполнена путем разматывания цикла (очевидно, не слишком далеко ... или вы можете просто не использовать цикл).
Итак, обычный цикл:
for(int i = 0; i < 100; i++)
{
myArray[i] += 1;
}
становится
for(int i = 0; i < 100; i+10)
{
myArray[i] += 1;
myArray[i+1] += 1;
myArray[i+2] += 1;
myArray[i+3] += 1;
myArray[i+4] += 1;
myArray[i+5] += 1;
myArray[i+6] += 1;
myArray[i+7] += 1;
myArray[i+8] += 1;
myArray[i+9] += 1;
}
Устройство Даффа реализует эту идею на C, но (как вы видели в Wiki) с серийными копиями. То, что вы видите выше, с приведенным примером, - это 10 сравнений по сравнению с 100 в оригинале - это незначительная, но, возможно, существенная оптимизация.