请考虑以下代码段:
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一个会更好用?
它会对性能产生任何影响吗?
答案 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语言的抽象机器中完全相同的效果。如果一个比另一个慢,那么它就是编译器中的实现质量缺陷。