在 C 中比较字符串的最快方法

Fastest way of comparing strings in C

我想知道在 C 中是否有比使用 strcmp() 更快的比较字符串的方法,尤其是当我必须在 switch 中比较一个字符串与多个预定义字符串时声明 时尚。在我的应用程序中,要比较的字符串有时可以达到 1000 个字符,所以我只是在想 strcmp() 是否足够,或者是否存在我不熟悉的更好、更有效的方法。我实际上正在从事一个低功耗嵌入式物联网项目,其中更多 CPU 周期耗电。

听起来问题似乎与 strcmp 本身无关,而与您如何使用它有关。

将字符串与 table 预定义字符串进行比较的最快方法是确保字符串按字母顺序排序,然后使用二进制搜索。其中 strcmp 作为比较函数。 C 标准 bsearch 在嵌入式系统上可能可行也可能不可行。否则,自己实现起来相当简单。

也就是说,除非字符串的数量很大。然后在某些时候,某种形式的散列 table 将比搜索执行得更好。要给出最佳效果的确切答案,需要数据的所有详细信息。

对于固定长度的字符串,您可以通过使用 memcmp 来稍微提高性能 - 这样您就不必检查空终止。但这确实是一个微优化。