考虑下面的代码片段:哪个更快:i = i + 2或i + = 2?
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一个会更好用?
它在性能上有什么不同吗?
考虑下面的代码片段:哪个更快:i = i + 2或i + = 2?
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一个会更好用?
它在性能上有什么不同吗?
你的问题没有确定的答案。这取决于您的编译器在其他方面(优化级别,......)和目标平台上的智能程度。这不是C语言问题。这种语言本身并不多或少表现。它只取决于编译器从中建立什么。因此,如果性能事关重大,请对其进行测试......
否则,我的建议是,以您感觉它更具可读性的方式编写它。
第一个选项至少与第二个选项一样快。 尽管任何编译优化都会生成相同的汇编代码。
下了0.0260015秒
for (i = 0 ; i < 10000000 ; i += 2)
这把0.0170010
for (i = 0 ; i < 10000000 ; i = i + 2)
@MasterID虽然是正确的,当我启用 '优化代码' 都报道0.0150009秒
两种表达完全相同的语义,即在C语言的抽象机器中完全相同的效果。如果一个比另一个慢,这是编译器中的一个质量缺陷。
你试过计时吗?你发现了什么? – Levon 2012-08-11 15:33:58
第二个会更快,因为绑定是不同的。 – 2012-08-11 15:34:44
@JensGustedt你能否更详细地解释一下?你的意思是2对10? – Gir 2012-08-11 15:35:26