运营商的表现' =='用布尔变量?

时间:2016-05-31 04:10:05

标签: c++ operators

我想每个程序员都会遇到这种情况,我们可以使用比较运算符' =='在我的情况下情况是这样的,c ++ pgm

代码1:这已在除构造函数

之外的所有文件中使用
@Policy

但我可以通过以下方式执行与上述相同的操作, 当变量 a 在构造函数本身中变为10时,我将bool变量设置为true,即

if(a==10)
{
 //do something;
}

然后我在我的所有文件中使用以下代码而不是代码1,

代码3:

constructor_name()
{
 boolean variable_name=TRUE;//when a == 10;
}

这对于性能,代码1或代码3更好。我希望我已经说明了我的情况,而不是你能理解的。请帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

你不应该进行微观优化。你很难发现你的2版本在性能上有任何差异(也许你会节省1个CPU周期),但它值得花时间和精力,尤其是因为现在CPU非常快。

优化,如果您在代码中进行了分析并找到瓶颈。

这样看,如果将布尔变量存储在类中,它会使用内存(1个字节)来节省1个CPU周期。根据您创建课程的频率,可以向上扩展(即使数量仍然非常小)。 您可能会保存1个周期,但丢失了1个字节。

如果你在生产代码中写这个,我相信其他人会发现它令人困惑(我愿意),并想知道为什么你在类中放置一个isTen布尔值,而不是仅仅使用{{来比较值1}}。

此外,如果您将构造函数的operator==更改为a,然后10仍为isTen,则可能存在错误,但falsea

答案 1 :(得分:-1)

我发现下面的内容会有所作为,

考虑变量 a 是一个整数变量,它需要4个字节(假设int为4bytes),那么编译器必须执行4字节内存的比较,其中bool变量需要1byte,我猜这在性能上有所不同。