c语言 - 测试2个字符串是否匹配的最快方法是什么?



我知道标准的strcmp()函数是测试字符串是否为"字典上小于、等于或大于";另一个。strcmp()是否也是查看两个字符串是否完全匹配的最快方法?如果不是,那是什么?

我知道标准的strcmp((函数是测试字符串是否为"字典上小于、等于或大于";另一个。strcmp((是否也是查看两个字符串是否完全匹配的最快方法?如果不是,那是什么?

听起来这个问题的前提是,可能有比strcmp()更快的东西,因为strcmp()会计算字符串是否小于或大于,并且你认为可能还有其他函数只决定字符串是否匹配,而该函数会更快,因为它在某种程度上做的工作更少。

不,没有这样的功能。

测试两个字符串是否匹配的最快方法是什么?

strcmp()提供了一个快速函数,它的速度肯定比任何用于隔离通用字符串的用户代码都快。strcmp()花费了大部分时间测试字符串的相等性,并且只需要在检测到不相等时作为最后一步进行顺序比较。因此,即使是只测试相等性的优化库函数也不会明显更快@Barmar

给定字符串a, b的2个指针,最快的匹配测试是只比较指针的a == b。如果是a == b,则指向的字符串匹配。然而,如果a != b,则指向的字符串可能仍然匹配或不匹配。

然而,对于最快方式的需求,更高的目标是什么?

如果我们有一组字符串要针对各种a进行重复测试,我们可以将b字符串的集合存储在哈希表中,并通过它们的哈希非常快速地进行比较。

我使用equal = a[0] == b[0] && strcmp(a,b) == 0作为预测试,在给定的应用程序中,它显著加快了比较速度,但考虑到要比较的预期字符串的选择条件,这是一种时间效率很高的解决方案,并且不是一种通用的更快的解决方案。

有许多方法可以加快字符串比较的。我们只需要从大局出发。

相关内容

最新更新