'this' 的速度与 javascript 中的缓存变量相比?
The speed of 'this' vs a cached var in javascript?
我通常不太关心微优化,直到涉及 javascript UI 性能(特别是在移动设备上)并将所有内容保持在神圣的 16.666666667 毫秒以内以获得流畅不间断60fps.
我是 运行 requestAnimationFrame 的一个 tick 函数,直到满足一个条件,它依赖于当前设置的一些值,例如 this.velocity、this.translateX 等实例.
我的问题是,是否会或应该使用 this
的缓存版本,如在 var _this = this;
中声明的那样,而不是引用“到处都更快?”。需要说明的是,我多次调用它....这是一些代码:
swipeIt.prototype.tick = function() {
if (Math.abs(this.translateX) < (+this.elWidth*1.2 && this.velocity > 6) ) {
this.velocity = this.velocity*1.15;
this.translateX = (this.dir === 'left') ? this.translateX - this.velocity : this.translateX + this.velocity;
requestAnimationFrame(function() {
_this._update(_this.updateCb);
_this.tick();
});
} else {
//....
}
}
任何其他关于进一步优化的建议都将受到欢迎,这是我第一次真正做到这一点。干杯。
不,您不会看到任何改进。如果有任何差异,那将是一个微小的性能下降,因为有额外的语句。
你可能见过类似的东西:
var $this = $(this);
在 jQuery 中。这很有意义,因为 $(this)
的计算成本很高,因此可以通过将 $(this)
分配给一个变量然后在任何地方使用该变量来大大改进散落着 $(this)
的代码。不过,就您而言,评估节省成本并不昂贵。访问 _this
的时间与访问 this
.
的时间一样长
我通常不太关心微优化,直到涉及 javascript UI 性能(特别是在移动设备上)并将所有内容保持在神圣的 16.666666667 毫秒以内以获得流畅不间断60fps.
我是 运行 requestAnimationFrame 的一个 tick 函数,直到满足一个条件,它依赖于当前设置的一些值,例如 this.velocity、this.translateX 等实例.
我的问题是,是否会或应该使用 this
的缓存版本,如在 var _this = this;
中声明的那样,而不是引用“到处都更快?”。需要说明的是,我多次调用它....这是一些代码:
swipeIt.prototype.tick = function() {
if (Math.abs(this.translateX) < (+this.elWidth*1.2 && this.velocity > 6) ) {
this.velocity = this.velocity*1.15;
this.translateX = (this.dir === 'left') ? this.translateX - this.velocity : this.translateX + this.velocity;
requestAnimationFrame(function() {
_this._update(_this.updateCb);
_this.tick();
});
} else {
//....
}
}
任何其他关于进一步优化的建议都将受到欢迎,这是我第一次真正做到这一点。干杯。
不,您不会看到任何改进。如果有任何差异,那将是一个微小的性能下降,因为有额外的语句。
你可能见过类似的东西:
var $this = $(this);
在 jQuery 中。这很有意义,因为 $(this)
的计算成本很高,因此可以通过将 $(this)
分配给一个变量然后在任何地方使用该变量来大大改进散落着 $(this)
的代码。不过,就您而言,评估节省成本并不昂贵。访问 _this
的时间与访问 this
.