我的 C 程序有很多 strstr 函数调用。标准库 strstr 已经很快,但在我的情况下,搜索字符串的长度始终为 5 个字符。我用一个特殊版本替换它以获得一些速度:
int strstr5(const char *cs, const char *ct) { 而(cs [4]){ if (cs[0] == ct[0] && cs[1] == ct[1] && cs[2] == ct[2] && cs[3] == ct[3] && cs[4] == ct[4]) 返回 1; c++; } 返回0; }
该函数返回一个整数,因为它足以知道 ct 是否出现在 cs 中。在这种特殊情况下,我的函数比标准 strstr 简单且更快,但我很想知道是否有人可以应用一些性能改进。即使是小的改进也是受欢迎的。
概括:
- cs 的长度 >=10,否则它可能会有所不同。长度之前是已知的(未在我的函数中使用)。cs 的长度通常在 100 到 200 之间。
- ct 的长度为 5
- 字符串的内容可以是任何东西
编辑:感谢您的所有回答和评论。我必须研究和测试想法,看看什么最有效。我将从 MAK 关于后缀 trie 的想法开始。