【问题标题】:Pre increment/decrement in a loop vs post increment/decrement with gcc and Visual C [duplicate]循环中的预递增/递减与 gcc 和 Visual C 的后递增/递减 [重复]
【发布时间】:2017-07-05 14:25:05
【问题描述】:

我知道有很多关于使用前增量(减量)与使用后的性能提升的问题。而且据我推测,大部分 C/C++ 编译器都会改变

for (int i =0; i<N; i++)
{
...
}

以下作为优化

for (int i =0; i<N; ++i)
{
...
}

我最近做了很多代码审查,我发现很多我可以将 i++ 更改为 ++i 的实例。问题是只修复良好的形式,或者在某些情况下它可以对性能产生影响?

意思是我通常使用的编译器:gcc 和 Visual C++ 会自动进行这种优化吗?也欢迎提供有关其他常用编译的信息。

【问题讨论】:

  • 我认为即使是编译器也会有一个更一致、更好看的风格。此外,只需使用不同的优化选项从您的源代码生成程序集,然后自己检查。没那么难。
  • 请注意,while (myTestVal &lt; x++) 的含义不同于 while (myTestVal &lt; ++x)
  • 好点我会解决我的问题

标签: c++ c visual-c++


【解决方案1】:

对于像 intdouble 这样的内置类型,您不会看到任何性能差异。

对于自定义 C++ 类型,您可能会看到不同之处,具体取决于它们实现运算符的方式 - 唯一知道的方法是阅读代码并对其进行分析。

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2016-01-31
    相关资源
    最近更新 更多