Kei*_*ler 2 c performance character
我正在写一个非常简单的函数,它计算某个字符在给定字符串中出现的次数.我有一个工作功能,但想知道是否有更有效或首选的方法来做到这一点.
这是功能:
size_t strchroc(const char *str, const char ch)
{
int c = 0, i = 0;
while(str[i]) if(str[i++] == ch) c++;
return c;
}
Run Code Online (Sandbox Code Playgroud)
我个人想不出任何方法来提高这段代码的效率.并且想知道(仅仅为了学习)是否有人知道如何使这个功能更有效.
(在速度和使用最少资源的意义上有效).
首先,除非你的功能真的是时间敏感的,否则不要试图过度优化.只需使用您提供的那个,因为它很容易验证是否正确,并且它不会试图变得聪明只是为了它.
如果功能真的需要快速,那么有很多方法可以更好地优化它.很多很多方面.它们中的一些要么期望或假设你所拥有的字符串的特定存储器布局(例如,它们被分配在字边界上,并且分配也总是填充到字边界).因此,您需要小心,因为算法可能会在处理器,编译器和内存分配器的某些组合上工作,而在其他组件上可能会失败.
只是为了它,我将列出一些加速字符计数器的可能方法:
等等.
但是我真的,如果你有现实问题,我真的建议你坚持使用你的那个.如果这是一个玩具问题,并且您正在优化它的乐趣,请继续.
循环剃须是一种学习CPU和指令集的有趣方式,但对于99.999999%的编程任务来说,这是不值得的.
| 归档时间: |
|
| 查看次数: |
2417 次 |
| 最近记录: |