在正常流程或条件语句(如 for
、if
等中使用按位运算会提高整体性能吗?在可能的情况下使用它们会更好吗?例如:
if(i++ & 1) {
}
对比
if(i % 2) {
}
最佳答案
除非您使用的是古老的编译器,否则它已经可以自行处理这种级别的转换。也就是说,现代编译器可以并且将使用按位 AND
指令来实现 i % 2
,前提是在 objective-c PU 上这样做是有意义的(在公平,它通常会)。
换句话说,不要期望看到它们之间在性能上的任何差异,至少对于一个相当现代的编译器和一个相当称职的优化器来说是这样。在这种情况下,“合理”也有一个相当广泛的定义——即使是相当多的几十年前的编译器也可以毫无困难地处理这种微优化。
关于c++ - 性能方面,按位运算符与普通模数相比有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393373/