考虑以下两个代码:
void PrintLetter(char *src)
{
while(*src != '\0')
{
printf("%c",*src);
src++;
}
}
和
void PrintLetter(char *src)
{
int i;
for(i=0;src[i];i++)
printf("%c",src[i]);
}
这两者之间是否有任何性能差异?
答案 0 :(得分:5)
无论如何。无论您正在编写何种表单,编译器都将执行其优化。底层汇编代码是相同的。
答案 1 :(得分:2)
任何性能差异都取决于编译器。
一些小型嵌入式系统有相当简单的编译器,可能会产生一个比另一个稍微不同的代码 - 虽然没有测试,但很难猜测哪个可能最终“更好”(尽管如果我不得不“盲目地”猜测,我可能会选择第一个。)
对于典型的桌面/服务器系统(例如,gcc,VC ++,EDG)上的编译器,您可能会得到(基本上)相同的结果,因此在它们之间进行选择纯粹是选择您认为更具可读性的内容