【发布时间】:2016-08-12 11:33:16
【问题描述】:
我正在观看 NodeJS 交互式演讲,演讲的人说匿名函数有多糟糕,原因之一是如果它们没有名称,VM 无法根据使用频率优化该函数,因为它是无名的。
所以如果调用一个有名字的函数
random.Async('Blah', function randomFunc() {});
randomFunc 可以优化为如下函数:
random.Async('Blah', function(cb) {});
这不会被优化,因为它是匿名的、无名的。
所以我想知道箭头函数是否会做同样的事情,因为我认为你不能命名箭头函数。
会
random.Async('Blah', (cb) => {});被优化了吗?
编辑:寻找那个人提到这一点的谈话的链接,将报告。 (这个演讲是很久以前的,只是我记得的)
【问题讨论】:
-
"匿名函数有多糟糕的原因之一是,如果它们没有名称,VM 无法根据其使用频率优化该函数,因为它是无名的。" --- 这需要适当的确认,因为这听起来很不对。名称纯粹是为开发人员而存在的,VM 可以随意将其更改为任何喜欢的名称。
-
(cb) => {})已经优化了。你想用它优化什么? -
你能提供一个演讲的链接吗?
-
@RobG 这就是我的观点(“一般来说,没有什么能保证性能是相同的”):“性能”没有绝对价值(甚至不确定人们说“优化”时的意思“在这个线程中 - 因为虚拟机使用这个术语来表示非常具体的东西)。它会因数千个不同的细微差别而有所不同。
-
我将听到此消息的视频添加到主帖
标签: javascript node.js optimization arrow-functions