我知道标准的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
作为预测试,在给定的应用程序中,它显著加快了比较速度,但考虑到要比较的预期字符串的选择条件,这是一种时间效率很高的解决方案,并且不是一种通用的更快的解决方案。
有许多方法可以加快字符串比较的集。我们只需要从大局出发。