递增:x ++ vs x + = 1

bea*_*mit 13 arrays optimization increment

我已经读过很多开发人员使用x + = 1而不是x ++来清楚.我知道x ++对于新开发人员来说可能不明确,而且x + = 1总是更清晰,但两者之间的效率是否存在差异?

使用for循环的示例:

for(x = 0; x < 1000; x += 1) VS for(x = 0; x < 1000; x++)

我知道它通常不是那么大的交易,但如果我反复调用一个执行这种循环的函数,它可能会在长期内累加起来.

另一个例子:

while(x < 1000) {
    someArray[x];
    x += 1;
}
Run Code Online (Sandbox Code Playgroud)

VS

while(x < 1000) {
    someArray[x++];
}
Run Code Online (Sandbox Code Playgroud)

可以用x + = 1代替x ++而不会造成任何性能损失吗? 我特别关注第二个例子,因为我使用两行而不是一行.

如何增加数组中的项?会someArray[i]++someArray[i] += 1在大循环中完成时更快吗?

SLa*_*aks 21

任何理智或疯狂的编译器都会为两者生成相同的机器代码.

  • 如果您使用的是解释性语言,则会出现更大的性能问题. (16认同)

Nob*_*ody 5

假设您谈到将这些应用于基类型而没有自己的类可以产生巨大的差异,它们可以产生相同的输出,尤其是在打开优化时.令我惊讶的是,我经常在反编译应用程序中发现x + = 1在汇编程序级别上使用x ++(add vs inc).