оригинальный код
while(i<30){ // do something i++; }
развернуто пока цикл
while(i<15){ // do something twice i+=2; }
Не можем мы развернуть его, как показано выше. Мы всегда должны делать это как http://en.wikipedia.org/wiki/Loop_unrolling?
В общем, ответ - нет. Это работает для 30 и 15, потому что 30 четное, но это не будет работать так же легко для нечетных чисел. «Устройство Даффа» было изобретено для общего случая. Это довольно уродливо, хотя.