首页 > 解决方案 > 更改布尔值或比较布尔值是否提供更好的性能?

问题描述

我一直在专门针对boolean我想知道更改布尔值或比较布尔值是否在执行速度方面提供更好性能的值进行编程。请赐教我这一点。我写了两个关于更改和比较布尔值的实例。

1.

bool b = false;

while (true) {
    b = true;
}
bool b = false;

while (true) {
    if (b == false)
        b = true;
}

哪一个提供更好的性能?

标签: c++c

解决方案


C++ 在抽象机器上运行。该抽象机器的行为在定义后被转换为实际的机器代码。

您的代码遇到了一些问题。

最大的一点是,C++ 中的所有循环都保证执行类似 I/O 的操作、同步或结束。

第二个问题是,除非同步,否则无法检测到中间状态。

因此,您的两个程序段都可以编译为:

bool b = true;

通过兼容的 C++ 编译器。

(现在,由于你的循环永远不会真正终止,编译器可以自由地做更奇怪的事情。)

C++ 中的优化取决于编写编译器可以理解并优化的代码。不能假定您用 C++ 编写的步骤与生成的机器代码 1:1 对应。该错误很常见,会导致 C++ 代码中的错误和优化失败。

基本上,你问的是蛋糕面团配方有多高。这是一个类别错误,您知道蛋糕有高度,并且将蛋糕面团的配方误认为具有蛋糕的特性。


推荐阅读