首先很抱歉我只是不知道如何称呼它的阴暗问题名称,如果出于同样的原因我无法找到答案,也很抱歉。
不过这很简单,看看这个日常代码:
value = x * y;
让我们想象一下这段代码在每一帧都被调用,我想确保值等于某个值。我的问题是:这样写会不会更有利可图:
if(value != x * y)value = x * y;
我是在想。疯狂的猜测是,只要值没问题,它就可以节省内存,但在必须设置值时需要两倍的内存。
有什么资料吗?
首先很抱歉我只是不知道如何称呼它的阴暗问题名称,如果出于同样的原因我无法找到答案,也很抱歉。
不过这很简单,看看这个日常代码:
value = x * y;
让我们想象一下这段代码在每一帧都被调用,我想确保值等于某个值。我的问题是:这样写会不会更有利可图:
if(value != x * y)value = x * y;
我是在想。疯狂的猜测是,只要值没问题,它就可以节省内存,但在必须设置值时需要两倍的内存。
有什么资料吗?
赋值通常更快,除非赋值是通过 setter 函数处理的,由于为保持数据完整性而进行了额外的更改,这可能会产生很长的开销。所以,如果你的目标是一个变量,或者一个类的简单属性(也就是说,它不是通过 描述的public function set theProperty(value:SomeType):void
),那么分配会更快,否则最好先检查,但这通常在 setter 函数中完成。
我在这里进行了测试:http: //jsperf.com/if-or-force-value
随机值:每次分配更好►显然因为 if 是无用的(将始终返回 true)
常量值:每次都分配更好 ► 不是我想的那样,但似乎分配一个值比 if 语句计算得更快。
我再次说 as3,这些测试是 javascript,它可能会有所不同,但我会感到惊讶。