San*_*jay -4 c c++ performance
我有两个变量a和b.我必须在变量a和b上写一个if条件:
这是第一种方法:
if(a > 0 || b >0){
//do some things
}
Run Code Online (Sandbox Code Playgroud)
这是第二种方法:
if((a+b) > 0){
//do some thing
}
Run Code Online (Sandbox Code Playgroud)
更新:考虑a和b是unsigned.then将在逻辑或(||)和算术(+)运算符之间花费较少的执行时间
这种情况将迭代大约一百万次.
任何有关这方面的帮助将不胜感激.
你的第二个条件是错的.如果a=1, b=-1000,它会评估false,而你的第一个条件将被评估为true.一般来说,你不必担心这些测试的速度,编译器会对条件进行大量优化,因此逻辑OR非常快.一般来说,人们犯的错误要比优化这些条件更大......所以不要试图优化,除非你真的知道发生了什么,编译器通常做得比我们任何人好得多.
原则上,在第一个表达式中你有2 CMP和1 OR,而在第二个表达式中,你只有一个CMP和一个ADD,所以第二个应该更快(即使编译器在第一种情况下做了一些短路,但这不可能发生100%的时间),但在你的情况下,表达式不相同(好吧,它们是正数...).
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |