考虑以下两段代码:
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]);
}
两者之间有性能差异吗?
没有任何区别。编译器会执行优化,无论你的编写形式如何。底层汇编代码是相同的。
diff
没有返回结果) :) - user142019printf("%s", src);
。 - user142019任何性能差异都取决于编译器。
一些小型嵌入式系统具有相当简单的编译器,可能会为其中一个生成略有不同的代码 - 但是没有经过测试,很难猜测哪一个最终会更好(尽管如果我必须盲目猜测,我可能会选择第一个)。
对于典型桌面/服务器系统上的编译器(例如gcc,VC ++,EDG),无论选择哪个,您都会得到(基本上)相同的结果,因此选择它们纯粹是选择您觉得更易读的内容的问题。
*img; img++
而不是img[i+j*width]
。编译器并不总是最聪明的。程序员需要比他/她的工具更加聪明。 - Chris Eberle