在变量中保存 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)
)
}
}
哪一个效率更高?垃圾收集会影响这里的性能吗?
最佳答案
这是非常微观的优化,除非您在属性访问方面遇到性能瓶颈。然而,只要看看发生了什么:
1.) 直接属性访问:
当您重复访问任何对象上的属性时,您将在类似散列表的结构中查找这些属性(速度很快),但如果没有找到,则(可能)在整个原型(prototype)链中查找(可能不那么快) )。
2.) 分配给本地人:
分配给局部变量时,您会查找一次,然后在局部范围内使用变量,这(应该)更快。
结论:
第二个选项会更“高效”,如果它对你很重要,我认为它更具可读性。此外,如果您重复访问相同的属性,则将它们保存在本地变量中是有意义的 - 摆脱了一堆重复,并且使用解构语法,看起来真的很愉快。
关于javascript - this.key 与变量性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42326535/