假设我有这样的东西:
var MyNamespace = {
Presets: {
Thing: {
something: {
rate: 10
}
}
}
};如果我在每秒触发数百次的rate函数中使用update(),那么最好像这样缓存对变量的引用:
var rate = MyNamespace.Presets.Thing.something.rate;
function update() {
var a = 5 + rate;
console.log(a);
return a;
}或者我可以这么做:
function update() {
var a = 5 + MyNamespace.Presets.Thing.something.rate;
console.log(a);
return a;
}我认为缓存会更快,但我的问题是它是否足够快,是否有理由这样做。这是一个微观优化,还是我应该担心的事情?
编辑
澄清:
update()是一个类的成员。requestAnimationFrame()更新游戏逻辑。当它这样做时,它将我的类称为‘update()’。我做了一个jsPerf测试。它没有显示出显著(或持久)的差异:
有时它会显示没有缓存的测试会慢一些。但有时,这是不一致的,而且也不太一致。不过,我想JavaScript会在引擎盖下对这种东西进行优化。
发布于 2017-03-06 14:23:52
据了解,JavaScript总是使用对象作为引用。这就是为什么有些JS框架有对象的克隆方法,甚至是深嵌套对象的方法。在我看来,这只是一个品味或可读性的问题。在我看来,你的第一个例子更容易读懂。
https://stackoverflow.com/questions/42627733
复制相似问题