怎么样实现快速内存查询?

to_be_or_not_to_be 2004-10-29 11:46:52
我自己写了一个,可以查询速度太慢了,哪位朋友有更快速的方法

/**************
sPos,内存起始位置
strIn,内存
sl,内存总长
key,要查找的字符
***************/
如果内存太大,例如100MB以上,查找就很慢了

int indexOf(int sPos, char *strIn, int sl, char *key)
{
int i;
int kl = (int)strlen(key);
for (i=sPos;i<sl;i++)
{
if (!strncmp(&strIn[i], key, kl)) return i;
}
return -1;
}
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
to_be_or_not_to_be 2004-10-30
  • 打赏
  • 举报
回复
对不起,纠正一个错误,因为我在写上传程序,我把那段时间也算进去了,我跟踪了一下时间,寻找一个100MB的内存只要1秒钟,虽然没用kmp,但我引用了它的一个基本概念,就是先寻找第一个字符,然后再寻找它们的相同点,函数更改如下:

int indexOf(int sPos, char *strIn, int sl, char *key)
{
int i;
int kl = (int)strlen(key);
char c = *key;
for (i=sPos;i<sl;i++)
{
if (c==strIn[i] && !strncmp(&strIn[i], key, kl)) return i;
}
return -1;
}

to_be_or_not_to_be 2004-10-30
  • 打赏
  • 举报
回复
KMP也不行,找一个100MB的内存要1分钟
fallhunter 2004-10-29
  • 打赏
  • 举报
回复

用改进的模式匹配算法,KMP
一般数据结构书里都有
oo 2004-10-29
  • 打赏
  • 举报
回复
自己实现一下strncmp功能,放到循环里,不要去call一个函数,call一个函数开销会比较大的。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧