【发布时间】:2017-07-08 16:02:16
【问题描述】:
在变量中保存this.key 的值是否值得?
假设我必须每帧都执行此操作,它会对速度产生影响吗?
简单示例:
class Vector3 {
constructor(X = 0, Y = 0, Z = 0) {
this.X = X
this.Y = Y
this.Z = Z
}
toVector2() {
return new Vector2(
(this.Y - this.X) * COS27,
-((this.Y + this.X) * SIN27 + this.Z)
)
}
}
对
class Vector3 {
constructor(X = 0, Y = 0, Z = 0) {
this.X = X
this.Y = Y
this.Z = Z
}
toVector2() {
const {X, Y, Z} = this
return new Vector2(
(Y - X) * COS27,
-((Y + X) * SIN27 + Z)
)
}
}
哪一个更高效?垃圾回收会影响这里的性能吗?
【问题讨论】:
-
用jsperf写个测试用例,自己看看吧。
-
性能差异如此之小,可以忽略不计。它可以归结为代码的可读性和维护。在大型项目中,只要它们不会极大地影响代码的可读性,我就会追求最小的优化。但是是的,从理论上讲,它确实会以一种不明显的方式影响性能。
-
ES6 解构赋值在大多数浏览器/转译器中仍然比直接属性访问慢(高达 100 倍),请参阅 six-speed。
-
谢谢,我不知道。
-
@wOxOm 一般来说,不是 100 倍,而是更接近 1 倍。如果不止于此,它将很快得到优化。我也不相信那些 FF 的数字——它们只是不可信。
标签: javascript performance optimization ecmascript-6