如果vs布尔赋值速度C ++

时间:2015-02-24 00:56:14

标签: c++ if-statement variable-assignment updates updating

我有一个在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();
    }
}

或者有更好的方法可以完全做到这一点吗?

2 个答案:

答案 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;
}