说明:笔记来自《高性能javascript》
一句话:减少迭代的次数能获得更佳的性能。于是:
//credit:Jeff Greenberg
var iterations = Math.floor(items.length/8),
startAt = items.length % 8, //PS:由于不是所有数字都整除8,变量startAt用来存放余数,表示第一次循环中应调用多少次process()
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);
Duff's Device的基本理念是:每次循环最多可调用8次process(),以减少循环的次数。如果items.length = 12,那么第一回循环调用4次process(),第二回8次。
在大量循环的时候用上。