JS for与for in对比(包含性能测试)

原创 2016年05月31日 19:44:07
测试事例(性能对比):

     终端前面部分是没有加入红框中的代码 


如上图, 明显for循环比for in 性能高很多(原因是因为for通过number遍历,for in 则是穷举所有索引)

其实for 与 for in 还有其它区别:
1、for中的i是number类型,for in中的 key是string类型;
2、如果扩展了js 的原生Array,for in 会将其遍历,出现错误结果;
3、如果遍历js对象,需要用for in。 

测试代码:

var s,d;
var arr = [];
for (var index = 0, len = 10000000; index<len; index++) {
    arr.push(index);
}
//Array.prototype.test=function(){
//
//};
function forSum(arr) {
    var i = 0,
        sum = 0,
        l = arr.length;
    for (; i<l; i++) {
        if (i == 0){
            console.log(typeof i);
        }
        sum += arr[i];
    }
}
function forInSum(arr){
    var sum = 0;
    for (var key in arr){
        if (key == 0){
            console.log(typeof key);
        }
        sum += arr[key];
    }
}
function performanceTest(func,param){
    s = new Date().getTime();
    func(param);
    d = new Date().getTime();
    console.log((d-s).toString());
}
performanceTest(forSum,arr);
performanceTest(forInSum,arr);



版权声明:本文为博主原创文章,未经博主允许不得转载。

enumerateObjectsUsingBlock 、for 、for(... in ...) 的区别 & 性能测试

for VS for(... in ...) for 的应用范围广基本可以NSArray、NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray、NSArray等...

java 中for循环的性能测试

import java.util.ArrayList; import java.util.List; public class BB { /** * for循环性能测试 */ publ...

php array_map,for,foreach性能测试

array_map是php自带的使用回调函数的数组批处理函数,看到这类函数的结构我就怀疑其处理效率。做了个小测试...

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql...

无人值守的性能测试 -- for 淘宝技术嘉年华 TCon2011

去年有幸参加了淘宝组织的测试技术大会,和不少业界同行有面对面沟通的机会,今年更有幸可以作为speaker参与。我的topic是无人值守的性能测试,主要讲的是我们公司内部的一些性能测试自动化的实践,我是...
  • superqa
  • superqa
  • 2011年07月03日 23:45
  • 2886

for i和for each和Java8的forEach性能测试,到底谁快的测试

有说这个快,有说那个快,但是,靠嘴不顶用啊。还是测试一下就知道啦。 如下 : /** * Created by King on 2016/7/27 * 关于for和for each到底谁快的测试 ...

FOR ALL ENTRIES IN内表排序、排重对性能的影响

大家都知道for all entries in 关联内表时,要先判断内表不为空 否则会扫描全表,非常消耗服务器内存资源,那么内表关键字段的排序和排重对查询效率有没有影响呢?下面看一个例子 程序代码:...

前端性能优化:for in循环的优化

for in循环非常慢,但有时候却不能不使用,那有没有方法改进呢?for in循环之所以慢,就是因为需要不停的遍历原型链,如果知道能够减少原型链的遍历就可以改进。改进方法,就是需要遍历的属性明确列出来...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS for与for in对比(包含性能测试)
举报原因:
原因补充:

(最多只允许输入30个字)