如果不使用结果值,i++和++i之间是否存在性能差异
执行摘要:没有
i++可能比++i慢,因为i的旧值
可能需要保存以供以后使用,但实际上所有这些都是现代的
编译器将对此进行优化
我们可以通过查看此函数的代码来演示这一点,
同时使用++i和i++
$cat i++.c
外部无效g(内部i);
void f()
{
int i;
对于(i=0;i<;100;i++)
g(i);
}
除了++i和i++之外,这些文件是相同的:
$diff i++.c++i.c
6c6
<;对于(i=0;i<;100;i++)
---
&燃气轮机;对于(i=0;i<;100;++i)
我们将编译它们,并获得生成的汇编程序:
$gcc-ci++.c++i.c
$gcc-si++.c++i.c
我们可以看到生成的对象和汇编程序文件都是相同的
$md5 i++.s++i.s
MD5(i++.s)=90f620dda862cd0205cd5db1f2c8c06e
MD5(++i.s)=90f620dda862cd0205cd5db1f2c8c06e
$md5*.o
MD5(++i.o)=DD3EF1408D3A9E4287 FACCEC53F7D22
MD5(i++.o)=DD3EF1408D3A9E4287 FACCEC53F7D22