Array 的 push 与 unshift 方法性能比较分析

发布于 2023-01-04 12:48:45 字数 1148 浏览 143 评论 0

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

下面来测试一下。 测试环境的主要硬件:

  • CPU T7100(1.8G);
  • 内存 4G DDR2 667;硬盘 5400 转。
  • 主要软件:操作系统为 Windows 7;
  • 浏览器为 Firefox 3.6.9。

测试代码:

var arr = [ ], s = +new Date; 
// push性能测试 
for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
console.log(+new Date - s); 
s = +new Date; 
arr = [ ]; 
// unshift性能测试 
for (var i = 0; i < 50000; i++) { 
  arr.unshift(i); 
} 
console.log(+new Date - s);

这段代码分别执行了 50000 次 push 和 unshift 操作,运行一次以后,得出结果: 12 1152,可见 unshift 比 push 要慢差不多 100 倍!

因此,平时还是要慎用 unshift,特别是对大数组。那如果一定要达到 unshift 的效果,有没有其他方法呢?

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

for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
arr.reverse(); 
//reverse的性能又如何呢,下面再来测试:
var arr = [ ], s = +new Date; 
for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
arr.reverse(); 
console.log(+new Date - s);

结果是: 12,可见 reverse 性能极高,甚至于没有额外的消耗,可以放心使用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
790 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文