c - C中的快速字符串比较

标签 c string compare

我目前有这种循环

while(1)
{
    generate_string(&buffer);

    for(int i = 0; i < filelines; i++)
    {
        if(strcmp(buffer,line[i]) == 0)
        {
           /*  do something  */
        }
    }
}

我有一个包含几百万个字符串的文件(希望很快能减半),所有这些字符串的数量都存储在filelines

line[i] 基本上是存储字符串本身的地方。

目前,由于对这百万个字符串进行比较,函数generate_string(&buffer);每秒执行大约42次。 有没有更快的方法在 C 中进行字符串比较?

最佳答案

strcmp 通常由所有供应商优化。但是,如果您对此不满意,可以尝试:

  • 查找 Burst Tries
  • 使用后缀树进行快速字符串比较——参见 this文章
  • 根据应用程序中字符串的大小,您可以编写自定义字符串比较器。例如:GNU libc 曾经对小字符串进行过这种优化,他们将小于五个字节的字符串作为整数进行测试。 MS cl 也对小字符串进行了一些优化(一定要查一下)。

但更重要的是确保 strcmp 是您的真正瓶颈。

关于c - C中的快速字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10722410/

相关文章:

c - g_object_new : assert from a call of g_application_send_notification()

c - 如何在 C 中将字符串复制到剪贴板?

java - 比较 Java 中相互引用的对象

C printf : Is there a way to add text after variable and before spacing?

c - 为什么 printf ("%.1f", 1) 输出 0.0

java - 在 Java 中实习的类

R提取字符串中的重复单词

php - 使用 PHP 从 MySQL 读取 Unicode 字符

Mysql更新表1与表2的比较

java - 抽象算法 : String/Byte Comparison/Diff