【发布时间】:2012-08-12 00:01:44
【问题描述】:
考虑下面的代码sn-p:
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪个更好用?
它对性能有什么影响吗?
【问题讨论】:
-
你试过计时吗?你发现了什么?
-
第二个会更快,因为界限不同。
-
@JensGustedt 你能详细解释一下吗?你是说 2 对 10?
-
对于任何一半体面的编译器,增量都将是相同的速度(即
x+=n;和x=x+n;将产生相同代码)。如果您将变量定义为volatile,可能会有一个例外,但这是非常不寻常的,几乎不值得讨论。 -
让我再次链接到this example,其中 10 多行代码产生 5 条机器指令。不要摆弄低级优化 - 编译器在这方面要好得多。
标签: c performance