我的 C++ 应用程序中有代码通常执行以下操作:
bool myFlag = false;
while (/*some finite condition unrelated to myFlag*/) {
if (...) {
// statements, unrelated to myFlag
} else {
// set myFlag to true, perhaps only if it was false before?
}
}
if (myFlag) {
// Do something...
}
我的问题与else
我的代码声明有关。基本上,我的循环可能会根据不满足的某个条件将 myFlag 的值从 false 设置为 true。永远不会将标志从真设置为假。我想知道哪种语句在性能方面更有意义,也许由于编译器优化,这个问题实际上不是问题。
myFlag = true;
或者
if (!myFlag) myFlag = true;
我通常会选择前者,因为它需要编写更少的代码。但是,我开始怀疑它是否涉及对内存的不必要写入,因此如果 myFlag 已经为真,后者将阻止不必要的写入。但是,使用后者是否会因为有条件语句而需要更多时间,因此使用更多指令编译代码?
又或者是我想太多了……
更新 1
只是为了澄清一点......我后一种情况的目的是如果变量已经为真,则不写入内存。因此,仅当变量为假时才写入内存。