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

Aka*_*kay 1 c string compare strcmp

我想知道是否有更快的方法来比较C中的字符串而不是使用strcmp(),特别是当我必须以switch语句方式比较字符串与多个预定义字符串时.在我的应用程序中,要比较的字符串有时可以大到1000个字符,所以只是想是否strcmp()足够,或者是否存在我不熟悉的更好,更有效的方法.我实际上正致力于低功耗嵌入式物联网项目,其中更多的CPU周期需要耗电.

Lun*_*din 6

这听起来好像问题与strcmp自身一样多,就像你如何使用它一样.

将字符串与预定义字符串表进行比较的最快方法是确保字符串按字母顺序排序,然后使用二进制搜索.在哪里strcmp充当比较功能.C标准bsearch在嵌入式系统上可能是可行的,也可能是不可行的.否则,实现起来相当简单.

也就是说,除非弦的数量很大.然后在某些时候,某种方式的哈希表将比搜索更好.为了给出最佳性能的确切答案,需要数据的所有细节.

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