让我们说我正在检查奇数:
(i % 2 == 1)
编译器会将该操作转换为:
if(a & 1)
?
我知道按位运算会更快,有时我会使用位。
但是我的问题是:如果普通算术更具可读性(在大多数情况下),那么编译器以后可以转换它时,我应该何时按位使用?
还是应该在可能的情况下(即使可读性较低)始终按位使用?
答案 0 :(得分:5)
您应始终使用人类更易阅读的格式。如果执行速度很重要,则必须分析程序并查看编译器生成的程序集。
答案 1 :(得分:0)
唯一的告诉方法是查看编译器生成的汇编语言代码。编译器可以进行各种优化。编译可以轻松地将您的模运算符更改为位测试指令。
性能是系统设计的产物;不进行编码。
两个示例之间的速度差异非常小,几乎在几乎所有应用程序中都不会注意到。