更多文章循环展开是一种程序变换,通过增加每次迭代计算的元素的数量,减少循环的迭代次数。用代码来说明就是将for (i = 0; i < len; i++) { sum += arry[i]}替换为for (i = 0; i < len; i += 2) { newSum += arry[i] + arry[i + 1]}循环展开对于算术运算来说,优化的作用是很大的。我分别对整数运算和浮点数运算作了多次测试,得出表格如下:操作整数整数(优化后)浮点数浮点数(优化后)+360163354164-379167341177*350160364163/1185715263测试环境cpu:i5-7400浏览器: chrome 70.0.3538.110运算是用了1千万个数,取值是运行十次测试得出的平均数。附上加法测试的代码const arry = []let num = 10000000while (num) { arry.push(num) num–}let sum = 0let last = new Date()let i let len = arry.lengthfor (i = 0; i < len; i++) { sum += arry[i]}let now = new Date()console.log(now - last)let newSum = 0last = new Date()for (i = 0; i < len; i += 2) { newSum += arry[i] + arry[i + 1]}now = new Date()console.log(now - last)console.log(sum, newSum)