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

这些结果来自小例子,可能根据执行的操作和执行环境的选择而有所不同。还与 VM 的选择有关。

1. Reduce vs for循环 vs foreach

 1// calculated the sum of upVotes 2const posts = [  3  {id: 1, upVotes: 2}, 4  {id: 2, upVotes: 18},  5  {id: 3, upVotes: 1},  6  {id: 4, upVotes: 30},  7  {id: 5, upVotes: 50}  8];let sum = 0; 9console.time('reduce');10sum = posts.reduce((s, p)=> s+=p.upVotes,0);11console.timeEnd('reduce')sum = 0;12console.time('for loop');13for(let i=0; i<posts.length; i++) {14    sum += posts[i].upVotes;15}16console.timeEnd('for loop');sum = 0;17console.time('for each');18posts.forEach(element => {19    sum += element.upVotes;20});console.timeEnd('for each');
     注意:下面是结果列表,代码可以在这里【https://github.com/dg92/Performance-analysis-es6】找到。

所有结果清楚地表明 for 循环比 map/reduce/filter/find 更加高效。

Map/Reduce/Filter/Find 很慢的原因有许多,其中有

1.他们有一个回调,会产生开销。

2.javascript 函数需要考虑很多极端情况,比如 getter、稀疏数组和检查传递的参数是否是数组,这会增加开销。

 我找到了一个 库。重新实现几个常见的内置原生 JavaScript 函数。

但是使用的原则不仅仅取决于性能,还有更多因素需要考虑,其中一些是:

1.代码可读性和可维护性

2.轻松编码

3.快速编码

4.实施和优化

5.个人选择


就个人而言,我喜欢 map、reduce、filter 和 find,并且我也使用过很长一段时间。他们帮助我写出干净、精确、快速并符合我思路的点代码。当我别无选择时,会使用 for 循环。

就优化而言,map/reduce/filter/find 替换应该是最后的选择,或者根本就不是一个选项,其具体取决于你所需的优化级别。

 注意:如果你正在使用循环,请始终用惯用方式使用,因为编译器现在能够以正确的方式去优化惯用循环

更新:你可以在这里【https://github.com/dg92/Performance-analysis-es6】找到大数据集和复杂计算的结果。

原文:https://codeburst.io/javascript-performance-test-for-vs-for-each-vs-map-reduce-filter-find-32c1113f19d7

©著作权归作者所有:来自51CTO博客作者mb5ff980b461ced的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 用 await/async 正确链接 Javascript 中的多个函数[每日前端夜话
  2. 数组的认识
  3. 用原生 JavaScript 实现十大 jQuery 函数[每日前端夜话0x94]
  4. shell脚本之灵活调用函数技巧
  5. 一篇文章完全掌握 JavaScript 数组操作[每日前端夜话0x87]
  6. 函数式编程思维在三行代码情书中的应用
  7. 关于 Hive开窗函数
  8. string.h中部分函数的实现
  9. JavaScript算法题:查找数字在数组中的索引[每日前端夜话0x69]

随机推荐

  1. PHPer都应当掌握的注释标记!
  2. 总结一些php命令行下的常用命令
  3. 关于php curl异步并发请求http
  4. 处理 PHP 开发版本问题
  5. 最快速度安装php(centos8)!
  6. 带你详解PHP生成器的使用
  7. 分享一个匹配8-16位数字和字母密码的正则
  8. PHP中str_replace高级使用你知道吗?
  9. PHP基础案例三:判断学生星座
  10. php实现斗鱼弹幕,一起来欣赏弹幕吧~