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

时间:2012-08-11 15:32:44

标签: c performance

请考虑以下代码段:

for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2

哪一个会更好用?
它会对性能产生任何影响吗?

4 个答案:

答案 0 :(得分:6)

以下花了0.0260015秒

for (i = 0 ; i < 10000000 ; i += 2)

这需要0.0170010

for (i = 0 ; i < 10000000 ; i = i + 2)

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

答案 1 :(得分:3)

你的问题没有明确的答案。这取决于您的编译器在其他方面(优化级别,......)和目标平台上的智能程度。这不是C语言问题。语言本身并不或多或少具有高效性。它只取决于编译器构建的内容。如果性能很重要的话,请根据您的用例进行测试......

否则我的建议就是以你觉得它更具可读性的方式写出来。

答案 2 :(得分:2)

第一个选项和第二个选项一样快,至少。 虽然任何编译优化都会生成相同的汇编代码。

答案 3 :(得分:2)

两者都表达完全相同的语义,即在C语言的抽象机器中完全相同的效果。如果一个比另一个慢,那么它就是编译器中的实现质量缺陷。