使用布尔变量的运算符"=="的性能?

Performance of operator '==' with boolean variable?

本文关键字:性能 布尔 运算符 变量      更新时间:2023-10-16

我想每个程序员都会遇到这种情况,我们可以使用比较运算符"==",在我的情况下,情况是这样的,一个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==比较值。

此外,如果将构造函数的aoutisde更改为10,则isTen仍然是false,但a10,则可能会出现错误!

我发现下面的事情会有所不同,

假设变量a是一个整数变量,它需要4个字节(假设int需要4个),那么编译器必须对4个字节的内存进行比较,其中bool变量需要1个字节,我想这会导致性能的差异。