c/c++语言开发共享为什么前缀增量(++ x)比C中的后缀增量(x ++)更快?


可能重复:
C ++中的i ++和++ i之间是否存在性能差异?

我听说它说前缀增量比C中的后缀增量要快。这是真的吗?为什么?

++ x vs x ++

    这是一个荒谬的神话,一遍又一遍地重复。 这两个运算符有语义差异; 一个结果是旧值,另一个结果是新值。 如果使用此结果,则代码将具有不同的行为,具体取决于您使用的运算符,如果一种行为可以比另一种更有效地实现,则可能包括性能差异。 但是如果你不使用结果, x=x+1x+=1x++++x都是相同的

    简短的回答没有。 原因是它是相同的操作,只是改变了语句的评估顺序。

    例:

     int a = x++; int b = ++x; 

    伪assembly:

     mov a, x inc x inc x mov b, x 

    这是一个简单的例子,但即使在更大的例子中,可能发生的最坏情况是内存屏障强制操作,它不允许将后增量值推送或拉过它,这只是因为依赖或强制而增加额外的mov操作屏障。 大多数编译器无论如何都会使用指令重新排序来优化标准情况下的额外mov

      以上就是c/c++开发分享为什么前缀增量(++ x)比C中的后缀增量(x ++)更快?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/523060.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐