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

回到顶部