c - 哪种方法可以更快地确定奇偶性?

标签 c optimization cpu

因此,当我学习编程时,我了解到简单的“x % 2”将是确定数字是否为偶数的快速好方法。从那以后我开始使用“x & 1”,因为我相信它在 CPU 中速度更快(尽管考虑到今天的速度可能毫无意义)。 任何对 CPU 了解更多的人都可以阐明这是否实际上更快,或者是否正在进行一些简单的编译器优化?

最佳答案

C 是一种编译语言。它不是汇编语言。

编译器的工作就是至少比你更了解(通常更多)机器的指令集。

如果您知道 x % 2x & 1 是等价的,您不认为您的编译器也应该知道这一点吗?

对于任何像样的编译器,如果您编写 x % 2,并且编译器知道位测试在您的计算机上会更快,它会自行发出代码来执行位测试.

底线是你应该编写清楚表达你的意图的代码,并让编译器担心优化它。只有在极少数情况下,您才能通过像这样的“微优化”来显着提高代码的性能。 如果您已经证明您尝试优化的代码是一个重大瓶颈,并且并且您已经证明所提出的改进确实非常显着,那么才值得执行它们快点。否则,请不要打扰:您可能在浪费时间。

但无论如何,我们无法告诉您哪种方式通常更快,因为每台机器可能都不同。为了确定答案,您必须亲自测量。

关于c - 哪种方法可以更快地确定奇偶性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228873/

相关文章:

c - 如何使用strtok分隔和获取新的字符串

c - 在函数之间分配多个变量

c++ - 我们是否需要在 C++ 中进行矢量化,或者 for 循环是否已经足够快?

c# - XNA 的高 CPU 使用率

memory - 缓存一致性协议(protocol) AMD Opteron 芯片(MOESI?)

C - Windows 和 Unix 上的可移植代码

c++ - 使用 Cppcheck 检查非标准文件扩展名

optimization - 在评估数据绑定(bind)时, knockout 是否针对逻辑运算符进行优化?

javascript - HTML 验证和加载时间

limit - 如何限制赋予特定程序的处理能力?