JS往数组中添加项性能分析


Posted in Javascript onFebruary 25, 2015

比较了4种可以向数组添加项的方法之间的性能:

使用索引器添加

console.time("index");

var a = [];

for (var i = 0, l = times; i < l; i++) {

    a[i] = i;

}

console.timeEnd("index");

使用push方法

console.time("push");

var a = [];

for (var i = 0, l = times; i < l; i++) {

    a.push(i);

}

console.timeEnd("push");

使用concat方法

console.time("concat");

var a = [];

for (var i = 0, l = times; i < l; i++) {

    a.concat(i);

}

console.timeEnd("concat");

使用concat方法,参数为数组

console.time("concat with array");

var a = [];

for (var i = 0, l = times; i < l; i++) {

    a.concat([i]);

}

console.timeEnd("concat with array");

把times设置为10000(万)次:

index: 0.310ms

push: 1.476ms

concat: 8.911ms

concat with array: 2.261ms

把times设置为100000(十万)次:

index: 1.967ms

push: 11.980ms

concat: 70.410ms

concat with array: 28.292ms

把times设置为1000000(百万)次:

index: 138.559ms

push: 93.074ms

concat: 608.768ms

concat with array: 243.371ms

把times设置为10000000(千万)次:

index: 1473.733ms

push: 611.636ms

concat: 6058.528ms

concat with array: 2431.689ms

总结

该结论仅受用与chrome浏览器

concat方法的执行效率是最慢的
相比两种concat方法的传参,当接受参数为数组时,执行效率要高于接受参数为非数组
索引器多数情况下执行效率要高于push方法
当执行次数越来越多时,索引器的执行效率开始不如push方法

浏览器对比

感谢网友指出,本人经验不足,在这里补上浏览器之间的横向对比

首先是使用concat方法,在ie和firefox中,参数为数组执行效率反而别参数为非数组慢一点,但差异并不大
然后index和push的方法比concat快是肯定的了,在ie中使用index方法始终要比push快,在firefox中push略胜一筹但差异不大
比较3个浏览器之间index和push方法的执行效率差异是巨大的,firefox的执行效率要比ie和chrome高出不少,在百万次的情况下,基本快10倍,ie相比另外两者最慢

以下为百万次的结果:

// firefox

index: timer started

index: 229.79ms

push: timer started

push: 205.12ms

concat: timer started

concat: 2136.99ms

concat with array: timer started

concat with array: 2365.18ms

```
// ie

index: 2,533.744 毫秒

push: 3,865.979 毫秒

concat: 4,303.139 毫秒

concat with array: 4,792.208 毫秒

本文仅仅是探讨JS的性能,通过对比加深小伙伴们对javascript的理解,希望大家能够喜欢。

Javascript 相关文章推荐
根据分辨率不同,调用不同的css文件
Jul 07 Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 Javascript
js文件包含的几种方式介绍
Sep 28 Javascript
JavaScript中对象介绍
Dec 31 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
Vue 实用分页paging实例代码
Apr 12 Javascript
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
JavaScript获取用户所在城市及地理位置
Apr 21 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
详解Typescript里的This的使用方法
Jan 08 Javascript
浅谈JavaScript中的String对象常用方法
Feb 25 #Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
Feb 25 #Javascript
提交按钮的name='submit'引起的js失效问题及原因
Feb 25 #Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 #Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 #Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 #Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 #Javascript
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
php类中private属性继承问题分析
2012/11/01 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
会计员岗位职责
2014/03/15 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
运输公司工作总结
2015/08/11 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
redis protocol通信协议及使用详解
2022/07/15 Redis