优化循环的方法-循环展开

简介: 优化循环的方法-循环展开

更多文章

循环展开是一种程序变换,通过增加每次迭代计算的元素的数量,减少循环的迭代次数。

用代码来说明就是将

for (i = 0; i < len; i++) {
    sum += arry[i]
}

替换为

for (i = 0; i < len; i += 2) {
    newSum += arry[i] + arry[i + 1]
}

循环展开对于算术运算来说,优化的作用是很大的。我分别对整数运算和浮点数运算作了多次测试,得出表格如下:

操作 整数 整数(优化后) 浮点数 浮点数(优化后)
+ 360 163 354 164
- 379 167 341 177
* 350 160 364 163
/ 118 57 152 63

测试环境

  • cpu:i5-7400
  • 浏览器: chrome 70.0.3538.110

运算是用了1千万个数,取值是运行十次测试得出的平均数。附上加法测试的代码

const arry = []
let num = 10000000
while (num) {
    arry.push(num)
    num--
}
let sum = 0
let last = new Date()
let i 
let len = arry.length
for (i = 0; i < len; i++) {
    sum += arry[i]
}
let now = new Date()
console.log(now - last)
let newSum = 0
last = new Date()
for (i = 0; i < len; i += 2) {
    newSum += arry[i] + arry[i + 1]
}
now = new Date()
console.log(now - last)
目录
相关文章
|
缓存 索引
这 11 个 for 循环优化你得会
这 11 个 for 循环优化你得会
101 0
|
Java
常见的for循环优化方式
经常使用一些循环,进行耗时计算的操作,特别是 for 循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当,将大大提高效率,下面总结几条 for 循环的常见优化方式。
152 0
|
测试技术
循环优化技巧一 —— 大循环在内,小循环主外
循环优化,是程序在最短时间内运行出结果,大部分思想是空间换时间,但是这个方法还是比较特别的。 直接看代码说话: using System;using System.
846 0
JavaScirpt基础do while循环
JavaScirpt基础do while循环
100 0
|
C#
C#基础——循环
C#基础——循环
205 0
表达式树练习实践:C#循环与循环控制
表达式树练习实践:C#循环与循环控制
168 0
|
C++
C++学习005-循环
C++在循环方面,感觉个C没有身边么区别
104 0
|
5月前
|
JavaScript 前端开发 Java
for 循环学习
【10月更文挑战第4天】
120 5
|
9月前
|
C语言
循环迭代判断\丢番图
循环迭代判断\丢番图
44 2