Williammer
7/9/2014 - 2:58 AM

jsPerform.DuffDevice.js - Divide the loop into two or more trips. This method will increase efficiency dramatically when the loop num get ov

jsPerform.DuffDevice.js - Divide the loop into two or more trips. This method will increase efficiency dramatically when the loop num get over 1000.

//credit: Jeff Greenberg
var iterations = Math.floor(items.length / 8),
    startAt = items.length % 8,
    i = 0;
do {
    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 (--iterations);

//faster 
//credit: Jeff Greenberg 
var i = items.length % 8;
while (i) {
    process(items[i--]);
}
i = Math.floor(items.length / 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--]);
}