我有一个在Nintendo DS(~50MHz CPU,~3MB RAM)上每秒运行~60次的功能。在这个函数中,我只有在布尔值从false变为true时才需要执行changed()
。 if语句是增加速度还是降低速度?
bool variable = false; //Externally changed and accessed variable
bool oldVar; //Previous state of variable
void update()
{
//////////////////////////////////
if (!variable)
//////////////////////////////////
oldVar = variable;
if (variable && !oldVar)
{
oldVar = true;
changed();
}
}
或者有更好的方法可以完全做到这一点吗?
答案 0 :(得分:0)
实际上,这完全取决于您期望发生变化的频率。
如果90%的时间都有变化,那么在很长一段时间内你可能会在" if"
中获得明显的性能提升。读取速度远远快于写入速度,因此,如果您很少需要写入(更改变量),那么只读取而不写入将为您节省大量时间。
如果您不得不经常更改变量,那么每次都必须进行读写操作,显然效率低于仅写入。但是,由于读取速度非常快,因此每秒只能读取60次。
答案 1 :(得分:-1)
我怀疑它确实会产生很大的不同,但我建议清理它以提高可读性/可维护性:
bool variable = false; //Externally changed variable
bool oldVar; //Previous state of variable
void update()
{
//update if going from false to true
if(variable && !oldVar) {
changed();
}
oldVar = variable;
}