因此,当我学习编程时,我了解到一个简单的'x%2'将是一个很好的快速方法来确定一个数字是否是偶数。我已经开始使用'x& 1',因为我相信它在CPU中更快(尽管今天的速度可能毫无意义)。 任何了解CPU的人都可以了解这是否真的更快,或者是否有一些简单的编译器优化?
答案 0 :(得分:5)
C是一种编译语言。它不是汇编语言。
编译器的工作至少要了解机器的指令集(通常要多得多)(或多得多)。
如果您知道x % 2
和x & 1
是等价的,那么您是否认为编译器应该知道这类事情?
对于任何体面的编译器,如果你编写x % 2
,并且编译器知道你的机器上的位测试会更快,它将发出代码来执行位测试,这一切都是单独的。
最重要的是,你应该编写清楚表达你意图的代码,并让编译器担心优化它。只有在极少数情况下才能通过微观优化和#34;显着提高代码的性能。像这样。如果您已经证明您尝试优化的代码是一个重要的瓶颈,和您&#39>,那么值得执行 ; ve表明所提出的改进确实明显更快。否则,不要打扰:你可能会浪费你的时间。
但无论如何,我们无法告诉你哪种方式更快,因为每台机器可能都不同。要确定,你必须自己测量它。