Javascript性能测试-每个vs的vs(映射,缩小,过滤,查找)。
Alex HolyoakeUnsplash拍摄的照片

我们都知道for循环比每个或javascript函数要快,因为javascript函数可能正在使用for循环或其他我不确定的东西。 我对对象数组进行了简单测试,并通过for 循环 / foreach / javascript函数进行了一些操作,并观察了执行时间。

这些结果来自较小的示例,并且可能会根据执行的操作以及执行环境的选择而有所不同。 和VM的选择。

1.减少vs for循环vs foreach

// calculated the sum of upVotes
const posts = [
{id: 1, upVotes: 2},
{id: 2, upVotes: 18},
{id: 3, upVotes: 1},
{id: 4, upVotes: 30},
{id: 5, upVotes: 50}
];
let sum = 0;
console.time('reduce');
sum = posts.reduce((s, p)=> s+=p.upVotes,0);
console.timeEnd('reduce')
sum = 0;
console.time('for loop');
for(let i=0; i<posts.length; i++) {
sum += posts[i].upVotes;
}
console.timeEnd('for loop');
sum = 0;
console.time('for each');
posts.forEach(element => {
sum += element.upVotes;
});
console.timeEnd('for each');
注意:以下是结果列表,可在 此处 找到代码

所有结果清楚地表明, 与map / reduce / filter / find相比for循环比每个循环都更加熟练。

由于多种原因,“映射/缩小/过滤/查找”速度很慢,其中一些原因

  1. 他们有回执行的电话,因此会产生开销。
  2. javascript函数考虑了很多特殊情况,例如getter,稀疏数组和检查传递的参数是否为array,这加重了开销。
我找到了一个 图书馆 重新实现了几个常见的内置本机JavaScript函数。

但是使用方式的选择不仅取决于性能,还需要考虑更多因素,其中一些因素是:

  1. 代码的可读性和可维护性
  2. 简易码
  3. 编码速度
  4. 实施与优化
  5. 个人选择

我个人很喜欢映射,缩小,过滤,查找,并且很长一段时间都在使用它们。 他们帮助我编写了干净,精确,快速且符合我的思维过程的关键代码。 当我别无选择时,我会使用for循环。 就优化而言,取决于所需的优化级别,map / reduce / filter / find替换应该是最后一个选项,而不是最后一个选项。

注意:如果您使用的是循环,请务必惯用它们,因为编译器现在已经足够聪明,可以正确地优化惯用循环

更新: 在这里您可以找到大型数据集和繁重计算的结果。

如果您想将其添加到我的电子邮件列表中,请考虑在此处输入您的电子邮件, 媒体 关注我, 以阅读有关javascript和 github的 更多文章, 以查看我的疯狂代码 如果有任何不清楚的地方,或者您想指出点什么,请在下方留言。

谢谢!

如果您喜欢这篇文章,请推荐并分享以帮助其他人找到它!

From: https://hackernoon.com/javascript-performance-test-for-vs-for-each-vs-map-reduce-filter-find-32c1113f19d7

相关文章: