gpt4 book ai didi

c - C 中的 i++ 和++i 之间有性能差异吗?

转载 作者:太空狗 更新时间:2023-10-29 16:13:32 26 4
gpt4 key购买 nike

如果不使用结果值,i++++i 之间是否存在性能差异?

最佳答案

执行摘要:否。

i++ 可能比 ++i 慢,因为 i 的旧值可能需要保存以备后用,但实际上所有现代编译器会对此进行优化。

我们可以通过查看此函数的代码来证明这一点,++ii++

$ cat i++.c
extern void g(int i);
void f()
{
int i;

for (i = 0; i < 100; i++)
g(i);

}

除了++ii++之外,文件是一样的:

$ diff i++.c ++i.c
6c6
< for (i = 0; i < 100; i++)
---
> for (i = 0; i < 100; ++i)

我们将编译它们,并获得生成的汇编器:

$ gcc -c i++.c ++i.c
$ gcc -S i++.c ++i.c

而且我们可以看到生成的目标文件和汇编文件是一样的。

$ md5 i++.s ++i.s
MD5 (i++.s) = 90f620dda862cd0205cd5db1f2c8c06e
MD5 (++i.s) = 90f620dda862cd0205cd5db1f2c8c06e

$ md5 *.o
MD5 (++i.o) = dd3ef1408d3a9e4287facccec53f7d22
MD5 (i++.o) = dd3ef1408d3a9e4287facccec53f7d22

关于c - C 中的 i++ 和++i 之间有性能差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com