我正在刷新我的"C"知识.我得到Arrays 衰减到指针以及它是如何工作的.在字符串处理中,我一直在运行看起来像这样的代码;
int count_spaces(const char *s) { int count = 0; for(; *s != '\0'; s++){ if(*s == ' '){ count++; } } return count; }
我从字符串处理代码中获得了什么性能提升而不是编写我的函数?
int count_spaces(const char s[]) { int count = 0, i; for(i = 0; s[i] != '\0'; i++) { if(s[i] == ' '){ count++; } } return count; }
是否有一个简单的词典可供使用何时使用指针而何时不使用?
这取决于编译器.有些编译器可能会为一种方法或另一种方法提供性能提升.
但是,查看具体示例可能很有用.使用gcc -S -O0
,我的机器上最低优化的装配输出为第一个功能提供了比第二个功能多 3 个指令.
但是使用-O3
标志它们被优化为相同的汇编文件.
编辑:还可以看到包围,使您的代码可读并且可以防止不幸的错误:)
int count_spaces(const char s[]) { int count = 0, i; for(i = 0; s[i] != '\0'; i++) { if(s[i] == ' ') { count ++; } } return count; }
编辑:
要清楚地回答您的问题:使用最清楚的人以及可能阅读您的代码的人.与可读性和意图清晰度相比,您可能获得的性能提升可以忽略不计.将它留给编译器来从代码中挤出这种性能