前言
循环是最耗费资源的操作,任意一个小小的损耗都会被成倍放大,从而影响程序整体运行的效率。有以下两个因素影响到循环的性能。
- 每次循环做什么。
- 循环的次数。
通过减少这两者中一个或全部的执行时间,可以提高循环整体性能。如果以此循环需要很长的时间,那么多次循环需要更长的时间
优化循环
普通写法
//遍历数组 方法1
arr=[2,34,65,323,45,34,43,435]
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
//方法2
var j=0;
while(j<arr.length){
console.log(arr[j++])
}
//方法3
var k=0;
do{
console.log(arr[k++])
}while(k<arr.length)
复制代码
优化写法
arr = [2, 34, 65, 323, 45, 34, 43, 435]
//方法1
for (var i = 0, len1 = arr.length;i<len;i++) {
console.log(arr[i])
}
//方法2
var j=0,len2=arr.length;
while(j<len2){
console.log(arr[j++])
}
//方法3
var k=0,len3=arr.length;
do{
console.log(arr[k++])
}while(k<len3)
复制代码
对于任何循环来说,每次执行循环体都要发生如下操作:
- 在控制条件中读取一次属性
(arr.length)
。 - 在控制条件中执行一次比较
(i<arr.length)
。 - 判断
i<arr.length
表达式的值是不是为true
。 - 一次自加操作
(i++)
。 - 一次数组查找
(arr[i])
。 - 一次控制台输出
console.log(arr[i])
。
优化循环第一步是减少对象成员和数组查找的次数。在大多浏览器上,这些操作比访问局部变量或直接量需要更长的时间。例如,在上面的代码中,每次循环都要查找arr.length
,这是一种浪费,因为该值在循环体执行过程不会改变,所以产生了不必要的性能损失。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END