c++ - 更改布尔值或比较布尔值是否提供更好的性能?
问题描述
我一直在专门针对boolean
我想知道更改布尔值或比较布尔值是否在执行速度方面提供更好性能的值进行编程。请赐教我这一点。我写了两个关于更改和比较布尔值的实例。
1.
bool b = false;
while (true) {
b = true;
}
bool b = false;
while (true) {
if (b == false)
b = true;
}
哪一个提供更好的性能?
解决方案
C++ 在抽象机器上运行。该抽象机器的行为在定义后被转换为实际的机器代码。
您的代码遇到了一些问题。
最大的一点是,C++ 中的所有循环都保证执行类似 I/O 的操作、同步或结束。
第二个问题是,除非同步,否则无法检测到中间状态。
因此,您的两个程序段都可以编译为:
bool b = true;
通过兼容的 C++ 编译器。
(现在,由于你的循环永远不会真正终止,编译器可以自由地做更奇怪的事情。)
C++ 中的优化取决于编写编译器可以理解并优化的代码。不能假定您用 C++ 编写的步骤与生成的机器代码 1:1 对应。该错误很常见,会导致 C++ 代码中的错误和优化失败。
基本上,你问的是蛋糕面团配方有多高。这是一个类别错误,您知道蛋糕有高度,并且将蛋糕面团的配方误认为具有蛋糕的特性。
推荐阅读
- node.js - mongodb查询结果返回的对象的解构
- javascript - Angular 7 / Typescript根据创建的时间隐藏一个Div
- unity3d - DllNotFound 异常 - 有什么问题?
- node.js - 如何在 goDaddy 共享主机上部署 node + react App
- javascript - Swagger basePath is not working host 是正确的,但 api 仍然无法正常工作。为什么?
- java - 如何在 Android Studio 中检查一个单词是否出现在英语词典中?
- flutter - 即使我总是可滚动,我的 Listview 也不会滚动
- mysql - 使用 SQL 将 json 数据列表字段转换为列
- javascript - 从 javascript 代码获取数据到 blazor 中的剃刀页面代码
- spring - 优化回答休息 springboot/jhipster