我专门针对boolean
值进行编程,在此我想知道更改布尔值或比较布尔值在执行速度方面是否提供更好的性能。请给我启发。我已经写了两个有关更改和比较布尔值的实例。
1。
bool b = false;
while (true) {
b = true;
}
bool b = false;
while (true) {
if (b == false)
b = true;
}
哪个提供更好的性能?
答案 0 :(得分:1)
C ++在抽象机上运行。定义后,该抽象机的行为将转换为实际的机器代码。
您的代码遇到了一些问题。
最大的优点是,保证C ++中的所有循环都可以执行类似I / O的操作,同步或结束。
第二个问题是,除非同步,否则无法检测到中间状态。
因此,您的两个程序段都可以编译为:
bool b = true;
由兼容的C ++编译器
。(现在,由于循环从未真正终止,因此编译器可以自由地执行甚至更奇怪的事情。)
C ++中的优化取决于编写编译器可以理解的代码以进行优化。不能假定您用C ++编写的步骤与生成的机器代码是1:1对应的。该错误很常见,并导致C ++代码错误和优化失败。
基本上,您要问的蛋糕面团配方有多高。这是一个类别错误,您知道蛋糕的高度,并且误认为蛋糕面团的配方具有蛋糕的特性。