【问题标题】:How "i++" is more efficient than "i = i + 1"? [duplicate]“i++”如何比“i = i + 1”更有效? [复制]
【发布时间】:2014-10-23 02:12:38
【问题描述】:

这两个语句在性能方面有什么区别吗?

i++;
i = i + 1;

【问题讨论】:

  • 您的标题与您的问题不符。
  • ++i 是最有效的,i++ 在递增变量之前返回 i 的副本。 ++i 是否简单地增加变量并避免复制。

标签: c


【解决方案1】:

取决于优化。在大多数处理器上,i++ 可以表示为单个机器语言指令。另一方面,i = i + 1 最多可以表示为四个:加载i、加载1、添加、存储到i;不过,即使是中等水平的智能编译器也应该能够识别它可以将其重写为前者。

【讨论】:

    【解决方案2】:

    不,没有区别。编译器会将它们编译成同一个程序集

    【讨论】:

    • 是的,Amadan 的回答更加完整和正确。我确实假设代码是在启用优化的情况下编译的。
    • @DividebyZero:好吧,说实话,今天在 LLVM 和其他东西的时代,我相信实际上没有区别。只是我不会自动假设 C = 现代 C :)(我有一些熟人仍在研究 25 岁的 Sun boxen)
    猜你喜欢
    • 2013-03-24
    • 2015-05-24
    • 2012-01-13
    • 2010-10-08
    • 2012-08-25
    • 2020-05-24
    • 1970-01-01
    • 2017-10-23
    • 2017-05-17
    相关资源
    最近更新 更多