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 相关文章推荐
gridpanel动态加载数据的实例代码
Jul 18 Javascript
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
浅析javascript的return语句
Dec 15 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
解决vue项目报错webpackJsonp is not defined问题
Mar 14 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
JS实现纵向轮播图(初级版)
Jan 18 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 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
PHP中PDO的错误处理
2011/09/04 PHP
PHP网络操作函数汇总
2015/05/18 PHP
php实现微信公众号无限群发
2015/10/11 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
js类型检查实现代码
2010/10/29 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python合并同类型excel表格的方法
2018/04/01 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
成教毕业生自我鉴定
2013/10/23 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014年女职工工作总结
2014/11/27 职场文书
2015年保管员工作总结
2015/04/30 职场文书