我有两个变量a和b。我必须在变量a上编写一个if条件并且b:
这是第一种方法:
if(a > 0 || b >0){
//do some things
}
这是第二种方法:
if((a+b) > 0){
//do some thing
}
更新:考虑 a 和 b 是无符号的。那么在 逻辑或(||) 和 之间将花费更少的执行时间>算术 (+) 运算符
此条件将迭代大约一百万次。
对此的任何帮助将不胜感激。
最佳答案
你的第二个条件是错误的。如果a=1, b=-1000
,它将计算为false
,而您的第一个条件将计算为true
。一般来说,您不必担心此类测试的速度,编译器对条件进行了很多优化,因此逻辑 OR 非常快。一般来说,人们犯的错误比优化这些条件更大......所以除非你真的知道发生了什么,否则不要尝试优化,编译器通常比我们任何人都做得更好。
原则上,在第一个表达式中,您有 2 个 CMP
和一个 OR
,而在第二个表达式中,您只有一个 CMP
和一个ADD
,所以第二个应该更快(即使编译器在第一种情况下做了一些短路,但这不可能100%发生),但是在你的情况下,表达式不是等价(嗯,它们是正数......)。
关于c++ - 哪个操作速度更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718597/