可能重复:
Is there a performance difference between i++ and ++i in C?为什么C中的前缀增量(++ x)比后缀增量(x ++)更快?
我听说,前缀增量比后缀增量快于C.这是真的,为什么?
++ x vs x ++
可能重复:
Is there a performance difference between i++ and ++i in C?为什么C中的前缀增量(++ x)比后缀增量(x ++)更快?
我听说,前缀增量比后缀增量快于C.这是真的,为什么?
++ x vs x ++
简答题no。原因在于它是相同的操作,只是语句的评估顺序发生了变化。
实施例:
int a = x++;
int b = ++x;
伪组件:
mov a, x
inc x
inc x
mov b, x
这是一个简单的例子,但即使在较大的实施例中,可以发生最坏的是存储器屏障执行操作,其不允许后增量值被推或拉过去,由于依赖性或强制性障碍,这只会增加额外的mov
操作。大多数编译器在使用指令重新排序的标准情况下优化掉这个额外的mov
。
这是一个反复反复的荒谬的神话。这两个运算符有语义的差异;一个结果是旧价值,另一个结果是新价值。如果您使用此结果,则代码将根据您使用的操作符而具有不同的行为,如果一种行为可以比另一种更有效地实现,则这可能包括性能差异。但是,如果您不使用结果,则所有x=x+1
,x+=1
,x++
和++x
都是相同的。
不是。问题的标题应该改变,以反映这... –
标题中的“为什么”让我兴奋,因为我期待着基准...什么让人失望... – Mysticial
不要相信你听到的一切。 –