diff --git "a/JavaScript\347\256\227\346\263\225\344\274\230\345\214\226\344\271\213\350\276\276\345\244\253\350\256\276\345\244\207" "b/JavaScript\347\256\227\346\263\225\344\274\230\345\214\226\344\271\213\350\276\276\345\244\253\350\256\276\345\244\207" new file mode 100644 index 0000000000000000000000000000000000000000..f2113bea46d59b2094097d82206a4f030382dcc7 --- /dev/null +++ "b/JavaScript\347\256\227\346\263\225\344\274\230\345\214\226\344\271\213\350\276\276\345\244\253\350\256\276\345\244\207" @@ -0,0 +1,28 @@ +> 达夫设备背后的基本理念是:每次循环中最多可8次调用```process()```函数。循环迭代次数为元素总数除以 8。因为总数不一定是8的整数倍,所以startAt变量存放余数.,指出第一次循环中应当执行多少次```process()```。 比方说现在有12个元素,那么第一次循环将调用```process()```4次,第二次循环调用```process()```8次,用2次循 环代替了 12次循环。 + +``` +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); +``` \ No newline at end of file