使用布尔变量的运算符"=="的性能?
Performance of operator '==' with boolean variable?
我想每个程序员都会遇到这种情况,我们可以使用比较运算符"==",在我的情况下,情况是这样的,一个c++pgm
代码1:除了构造函数之外,所有文件都使用了这个
if(a==10)
{
//do something;
}
但是我可以用下面的方法做同样的事情,当变量a在构造函数中变为10时,我将bool变量设置为true,即
constructor_name()
{
boolean variable_name=TRUE;//when a == 10;
}
然后我在我的所有文件中使用以下代码,而不是代码1,
代码3:
if(variable_name)
{
//do same as first code
}
哪一个对性能更好,代码1还是代码3。我希望我已经说明了我的情况,这样你就可以理解了。请帮帮我。提前谢谢。
您不应该进行微优化你几乎不会注意到你的2个版本在性能上有任何差异(也许你会节省1个CPU周期),但这不值得花时间和精力,尤其是因为现在的CPU真的很快。
只有在分析并发现代码中存在瓶颈时才进行优化。
这样看,如果你把布尔变量存储在类中,它会使用内存(1字节)来节省1个CPU周期。根据创建类的频率,可以扩展(即使数量仍然小得离谱)您可能保存了1个周期,但丢失了1个字节
如果你在生产代码中写这篇文章,我相信其他人会觉得很困惑(我会的),并想知道为什么你在类中放一个isTen
布尔值,而不是只使用operator==
比较值。
此外,如果将构造函数的a
outisde更改为10
,则isTen
仍然是false
,但a
是10
,则可能会出现错误!
我发现下面的事情会有所不同,
假设变量a是一个整数变量,它需要4个字节(假设int需要4个),那么编译器必须对4个字节的内存进行比较,其中bool变量需要1个字节,我想这会导致性能的差异。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 一个关于在C++中重载布尔运算符的问题
- 提升精神:解析布尔表达式并简化为规范范式
- 大小相等但成员数量不同的结构之间的性能差异
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 线程之间的布尔停止信号
- 为什么constexpr的性能比正常表达式差
- 布尔比较运算符是如何在C++中工作的
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 隐式常量/非常量运算符布尔
- 在类中使用随机生成器时出现性能问题
- 在main()之外初始化std::vector会导致性能下降(多线程)
- isspace 函数的性能警告,从 int 转换为布尔值
- C++:绘制随机布尔值的性能
- 使用布尔变量的运算符"=="的性能?
- 枚举静态转换为布尔,编译器发出性能警告
- 内部评估的布尔条件以获得循环性能