使用ES6箭头功能是否有性能提升?

gri*_*edj 12 javascript performance ecmascript-6 arrow-functions

ES6中的新箭头函数就像一行函数,它使代码更加简洁明了,并且还允许您将调用者的范围保持在函数内部,这样您就不需要做类似的事情var _this = this;,或者使用该bind功能等.

使用ES6箭头函数比普通的javascript函数有任何显着的性能提升吗?

Hib*_*u57 13

请记住,对于这个问题不可能有一个普遍的答案,因为所有这些都是依赖于实现的.因此,答案可能是X现在或某些浏览器,并且将来可能是Y或其他浏览器.

这些规定说,这里有一些数据:http://incaseofstairs.com/six-speed.对于现在和主流浏览器,答案是否定的,甚至可能存在性能损失(根据上述规定).


Ami*_*adi 5

相反:“箭头函数速度较慢”。

从理论角度来看(并非特定于 JavaScript),lambda(箭头函数)是匿名的,因此它们通常在运行时在堆上计算。

这意味着编译器可能无法“内联”对这些 lambda 的调用。与具有更高内联机会的普通自由纯函数相比,这会降低 lambda 的性能。

位于堆上也会给垃圾收集器带来压力。请参阅TypeScript 作者的评论,它解释了为什么箭头函数速度较慢。

基准示例

箭头方法分别比类方法和自由函数慢 10% 和 60%

https://jsbench.me/g4kjcq9j3s/1