当前位置:  开发笔记 > 编程语言 > 正文

在通过索引访问元素时将char指针递增时是否有任何性能提升?

如何解决《在通过索引访问元素时将char指针递增时是否有任何性能提升?》经验,为你挑选了1个好方法。

我正在刷新我的"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;

}

是否有一个简单的词典可供使用何时使用指针而何时不使用?



1> Dylan Kirkby..:

这取决于编译器.有些编译器可能会为一种方法或另一种方法提供性能提升.

但是,查看具体示例可能很有用.使用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;
}

编辑:

要清楚地回答您的问题:使用最清楚的人以及可能阅读您的代码的人.与可读性和意图清晰度相比,您可能获得的性能提升可以忽略不计.将它留给编译器来从代码中挤出这种性能

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有