您的位置首页百科问答

Arra基零项劳一各y的push与unshift方法性能比较分析

Arra基零项劳一各y的push与unshift方法性能比较分析

从原理就可以套日延结沙试衣知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。

测试环境的主要硬花杂创件:CPUT7100(1.8G);内存4GDDR友论话身绝划居般2667;硬盘5400转。主要软件:操作系统为Windows7;浏览器为Firefox3.6.9。测试代码:

复制代码代码如下:

vararr=[],s=+newDate;

//push性能测试

for(vari=0;i<50000;i+360问答+){

  arr.push(i);

}

console.log(+newDate-s);

s=+newDate;

arr=[打原南罪技刻友];

//unshift性能测试

for(vari=0;i<50000;i++){

  arr.un越含贵氢读末shift(i);

}

console.log(+newDate-s);

这段代码分别执行了50000次push和unshift操作,运行一次以后,得出结果:

12

1152

可反乱见,unshift比push要振甲低室实慢差不多100倍!因此,平时还是要慎用un升声鲜电额获白单料溶shift,特别是对大数组。那如果一定要达到unshift的效果,有没有其他方法呢?答尽唱管命始案是肯定的。

Array有一个叫做reverse的方法,能够把一高容跑个数组反转。先把要放进数组的元素用push添加,再执行一次reverse,就达到了unshift的效果。比如:

复制代码代码如下:

for(vari=0;i<50000;i++)命率建蛋议{

  arr.push(i);

}

arr.reverse();

reverse的性能又如何呢,下面再来测试:

复制代码代码如下:

va社搞殖站事田rarr=[],s=+n妈界副死危红山杆低ewDate;

for(vari=0;i<50000;i++){

  arr.p书有总战木钟坐ush(i);

}

arr从九也师容.reverse();

console.log(+甚个课并无呀歌演听newDate-s);

结果是:

12

可见,reverse性能极历诗菜路吃村负妒代计福高,甚至于没有额外的消耗,可以放心使用。