c++ - 哪个操作速度更快?

标签 c++ c performance

我有两个变量ab。我必须在变量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/

相关文章:

c++ - Cocos2d-x自定义内存模型有哪些优势?

javascript - jQuery 选择器,效率

mysql - 从具有 30M 行的 Innodb 表中删除 5K 行的最佳方法

java - 如何限制 C++ 或 JAVA 中类的实例数?

c++ - 读取 txt 文件并从第二列中找到第一列给定值的最小值

c - 在c中使用pread()读取和使用pwrite()写入

c - 仅对正整数进行用户验证

c - Linux 中的 Pthread

php - 在 PHP 中使用较少的变量对性能有影响吗?

c++ - 尝试逐个像素地理解位图