Javascript在类似条件下函数调用开销方面的差异
Javascript differences in the expense of function calls under similar conditions
我一直在努力研究最近组合的两个jsperf的结果,并试图理解其中一个对另一个的影响。两者都处理函数调用与内联操作。
第一个jsperf如果简单:http://jsperf.com/bool-exp-vs-func-call
在第一种情况下,我们循环并调用一个函数,该函数计算布尔epxression,该函数在每次调用后随机旋转。在第二种情况下,我们循环,但我们直接在循环中计算相同的布尔表达式。
这里的性能差异在镀铬方面相当小。我上一次跑步是601(内联)vs 555(函数)。这不是我会失眠的事情。
但是,我在这个jsperf中放入了一个奇怪的循环情况:http://jsperf.com/array-traversal-loop-vs-foreach/6
在这里,我只对比较情况1(这是一个原始的for循环)和第三种情况(这是"自己的foreach")感兴趣。在情况1中,我们循环N次并完成我们的工作(简单地陈述变量)。在情况2中,我们循环N次并调用一个函数来完成我们的工作。
但在这里,性能差异是相当大的。1717348(内联)vs 214878(函数)。
我错过了什么?
第一个问题是没有函数调用,因为在这种情况下它是内联的。第二个问题是,即使您使函数不可内联(在chrome中),它的代码也只是位于指令缓存中,并且命中率很高,所以很难看出区别。
对于您的第二个jsperf,分配一个新的函数对象与调用一个函数是完全不同的任务,它比较的是苹果和桔子。
相关文章:
- 如何在服务、技能、投资组合等方面添加滑动效果
- 使用jQuery 1.8.1准备好多个$(document).是否有任何开销
- Typescript在语法方面与es6/es7有多大不同
- 在使用javascript的Ajax方面遇到了困难
- 递增 PHP 变量在 JSCRIPT 文档工作方面
- 在简单的iMacros编程方面需要帮助
- 我需要javascript替换regex方面的帮助
- 如何使用dojo方面调用常规JavaScript函数
- 评论的含义是什么;Go Horse'在编码方面?这是某种过程吗
- 改变嵌入式YouTube视频的方面配比
- JavaScript 库的性能开销
- 哪一个在访问数组长度方面的性能更好
- 在速度方面,使用变量而不是重新定义jquery对象更好吗
- jquery性能-页面在清除.html内容方面滞后
- 使用Node.js的多人游戏方面
- 我在jQuery事件处理和隐藏/显示图像元素方面做错了什么
- Ionic应用程序在chrome和设备方面落后了很多
- 我可以在这方面提及钥匙吗
- 在层中加载多个图像,哪种方法更有效(资源方面)?-加载并编译PHP或将其堆叠
- Javascript在类似条件下函数调用开销方面的差异