哪个更快:i = i + 2或i + = 2?

Gre*_*lin -3 c performance

请考虑以下代码段:

for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
Run Code Online (Sandbox Code Playgroud)

哪一个会更好用?
性能有什么不同吗?

Cod*_*ely 6

以下花了0.0260015秒

for (i = 0 ; i < 10000000 ; i += 2)
Run Code Online (Sandbox Code Playgroud)

这花了0.0170010

for (i = 0 ; i < 10000000 ; i = i + 2)
Run Code Online (Sandbox Code Playgroud)

@MasterID是正确的,但是当我启用'优化代码'时,两者都报告了0.0150009秒

  • 我不怀疑你的时间,但我很确定他们没有表明后一个代码实际上更慢.在我手边的两个编译器(gcc和clang)下,两者都生成完全相同的汇编代码.你几乎肯定会测量噪音. (2认同)

jde*_*aan 5

你的问题没有明确的答案。这取决于您的编译器的智能程度(优化级别等)以及在目标平台上的智能程度。这不是 C 语言问题。该语言本身并没有或多或少的性能。这仅取决于编译器从中构建的内容。因此,如果性能很重要,请为您的用例测试它......

否则我的建议是,按照你觉得更易读的方式来写。