strstr比算法快?
我有一个21056字节的文件。
我已经用C语言编写了一个程序,该程序将整个文件读入缓冲区,然后使用多种搜索算法在文件中搜索82个字符的令牌。
我已经使用了“精确字符串匹配算法”页面上算法的所有实现。我用过:KMP,BM,TBM和Horspool。然后,我使用了strstr
每个基准并对其进行了基准测试。
我想知道的是,每一次strstr
优于所有其他算法。有时唯一更快的是BM。
不strstr
应该是最慢的吗?
这是我的基准测试代码,其中包含基准测试BM的示例:
double get_time(){
LARGE_INTEGER t, f;
QueryPerformanceCounter(&t);
QueryPerformanceFrequency(&f);
return (double)t.QuadPart/(double)f.QuadPart;
}
before = get_time();
BM(token, strlen(token), buffer, len);
after = get_time();
printf("Time: %f\n\n", after - before);
有人可以向我解释为什么strstr
优于其他搜索算法吗?如果需要,我将应要求发布更多代码。
回答:
您为什么认为strstr
应该比其他所有慢?您知道strstr
使用什么算法吗?我认为很有可能会strstr
使用一种KMP
类型或更佳的,经过微调的,特定于处理器的,经过汇编编码的算法。在这种情况下,C
对于如此小的基准测试,您将没有表现出色的机会。
(我认为这很可能是程序员喜欢实现这些东西的原因。)
以上是 strstr比算法快? 的全部内容, 来源链接: utcz.com/qa/401923.html