在Javascript中对数组遍历进行基准测试:如何快速回退

有很多方法可以遍历JavaScript中的数组。 在此基准测试中,我们将研究五种不同的方法以及每种方法的利弊。 请记住,这些基准测试是在Codepen上的Chrome浏览器中运行的。 结果将因浏览器/解释器而异。

有关这些基准的有效示例,请查看以下代码笔:

我们所有的基准测试都是基于10亿个项目。

第一名:香草JS-向后

for ( let i = arr.length -1 ; i>= 0 ; i--){}

〜30毫秒

向后退比向前 ! 这是因为循环在每次迭代时都会检查常量0零值,而不是调用数组的.length属性。 但这并不意味着您应该这样做...它很奇怪,很难在认知上遵循。

第二名:香草JS-转发

for ( let i = 0 ; i< arr.length; i++){}

约39毫秒

第三名:ES6 forEach()

arr.forEach(function ( element )  {});

约180毫秒

速度慢,但语法更方便,在这里不足为奇。

第四:每个jQuery

$.each(arr,function (  index, value  )  {});

〜225毫秒

Eeeeeew ... jQuery。 如果您住在2010年,就很方便。非常慢。

通配符:对于ES6

for ( const item of arr){}

第一次和第二次运行:153毫秒
第三次以上的跑步时间:约18毫秒

这很奇怪,我不确定如何解释。 也许比我聪明的人可以向我发送@wagslane的答案。 在新的浏览器加载之后运行此命令的前两次速度相当慢,但随后又Swift地增长。 我假设可以进行一些es6优化。

订阅Qvault: https ://qvault.io



翻译自: https://hackernoon.com/benchmarking-array-traversal-in-javascript-how-to-go-backwards-the-fastest-ng1t3yfl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值