Duff's Device for JavaScript
Nicholas Zakas in his book "High Performance JavaScript" has mentioned about Jeff Greenberg's JavaScript implementation of Tom Duff's original technique of unrolling loop bodies in order to let each iteration perform job of many iterations.
for (var i = 0, loopLen = items.length; i < loopLen; i++) {
process(items[i]);
}
var arrLen = items.length;
var loopLen = Math.floor(arrLen / 8),
startAt = arrLen % 8,
i = 0;
switch (startAt) {
case 0: process(items[i++]);
case 7: process(items[i++]);
case 6: process(items[i++]);
case 5: process(items[i++]);
case 4: process(items[i++]);
case 3: process(items[i++]);
case 2: process(items[i++]);
case 1: process(items[i++]);
} startAt = 0;
} while (--loopLen)
var arrLen = items.length;
var i = arrLen % 8;
process(items[i--]);
} i = Math.floor(arrLen / 8); while (i) {
process(items[i--]);
process(items[i--]);
process(items[i--]);
process(items[i--]);
process(items[i--]);
process(items[i--]);
process(items[i--]);
process(items[i--]);
}