c++ - 编译成更快的代码 : "n * 3" or "n+(n*2)"?

标签 c++ c optimization compiler-construction performance

哪个编译成更快的代码:“ans = n * 3”或“ans = n+(n*2)”?

假设 n 是 int 或 long,并且它在现代 Win32 Intel 机器上运行。

如果涉及一些取消引用,这会有所不同吗,也就是说,哪一个会更快?


long    a;
long    *pn;
long     ans;

...
*pn = some_number;
ans = *pn * 3;

或者

ans = *pn+(*pn*2);

或者,这是不需要担心的事情,因为优化编译器可能会在任何情况下解决这个问题?

最佳答案

在我看来,这种微优化是没有必要的,除非你使用一些奇异的编译器。我会把可读性放在首位。

关于c++ - 编译成更快的代码 : "n * 3" or "n+(n*2)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757/

相关文章:

c++ - 我无法在 RAD Studio C++ Builder XE 中构建静态可执行文件

c - memchr() 是如何工作的?

python - scipy 最小化 SLSQP - 'Singular matrix C in LSQ subproblem'

debugging - 发布/调试版本之间存在巨大的帧速率差异

jquery - 如何压缩json文件

c++ - 围绕另一个 vector 旋转一个 vector

c++ - 带有来自第一个宏的参数的宏到另一个宏

c++ - 为什么我的程序在 boost::enable_shared_from_this<>/boost::shared_ptr<> 中崩溃?

c - Visual C 中的文件路径验证

c++ - Linux 中 C++ 的 UDP Socket 编程