我想知道在C中比较字符串是否比使用strcmp()
更快的方法,尤其是当我必须在 switch语句中比较一个字符串和多个预定义的字符串时>时尚。在我的应用程序中,要比较的字符串有时可以达到1000个字符,因此只是想想strcmp()
是否足够,或者是否存在我不熟悉的更好而有效的方式。我实际上正在从事一个低功耗的嵌入式物联网项目,该项目中更多的CPU周期消耗了电源。
答案 0 :(得分:6)
听起来好像问题strcmp
本身与您的使用方式无关。
将字符串与预定义的字符串表进行比较的最快方法是确保按字母顺序对字符串进行排序,然后使用二进制搜索。其中strcmp
用作比较功能。 C标准bsearch
在嵌入式系统上可能可行或可能不可行。否则,实现自己非常简单。
也就是说,除非字符串数量太多。然后,在某种程度上,某种形式的哈希表将比搜索更好。为了给出最佳性能的准确答案,需要数据的所有细节。
使用固定长度的字符串,您可以改用memcmp
来稍微提高性能-这样,您就不必检查null终止了。但这实际上是微观优化。