c++ - 性能方面,按位运算符与普通模数相比有多快?

标签 c++ bit-manipulation bitwise-operators

在正常流程或条件语句(如 forif 等中使用按位运算会提高整体性能吗?在可能的情况下使用它们会更好吗?例如:

if(i++ & 1) {

}

对比

if(i % 2) {

}

最佳答案

除非您使用的是古老的编译器,否则它已经可以自行处理这种级别的转换。也就是说,现代编译器可以并且将使用按位 AND 指令来实现 i % 2,前提是在 objective-c PU 上这样做是有意义的(在公平,它通常会)。

换句话说,不要期望看到它们之间在性能上的任何差异,至少对于一个相当现代的编译器和一个相当称职的优化器来说是这样。在这种情况下,“合理”也有一个相当广泛的定义——即使是相当多的几十年前的编译器也可以毫无困难地处理这种微优化。

关于c++ - 性能方面,按位运算符与普通模数相比有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393373/

相关文章:

math - 为什么 ( x & 3 ) 与 ( x mod 4 ) 相同?

c++ - WinHttp C++ 中的 POST 请求

c++ - 无法使用 friend 类的方法

Python 十六进制值的异或运算符

c# - 如果位掩码包含位,我该如何检查?

vbscript - 为什么 VBScript 的按位 And 在一种情况下失败?

sql-server - SQL Server 中的按位运算

c++ - 无法使用 'designFlags' 类型的右值初始化 'int' 类型的变量

java - 如何在 Qt for android 中保持屏幕打开?

c++ - STL map Custom Key Class [默认构造函数]