I wanted to know if there are even faster ways of comparing strings in C than using strcmp()
, especially when I have to compare a string with multiple pre-defined strings in a switch statement fashion. In my application, the string to be compared can sometimes go as big as 1000 chars, so was just thinking if strcmp()
is sufficient enough or if there exists better and efficient way which I am not familiar with. I am actually working on a low power embedded IoT project where more CPU cycles cost power.
相关问题
- Multiple sockets for clients to connect to
- how to split a list into a given number of sub-lis
- What is the best way to do a search in a large fil
- glDrawElements only draws half a quad
- Generate string from integer with arbitrary base i
It doesn't sound as if the problem has as much to do with
strcmp
itself, as how you use it.The fastest way to compare strings against a table of pre-defined strings, is to ensure that the strings are sorted alphabetically, then use binary search. Where
strcmp
acts as the comparison function. C standardbsearch
may or may not be feasible on an embedded system. Otherwise, it is fairly simple to implement yourself.That is, unless the number of strings are vast. Then at some point, some manner of hash table will perform better than searching. To give an exact answer of what performs best, one needs all the details of the data.
With fixed-length strings you can improve performance ever so slightly by using
memcmp
instead - that way you don't have to check against null termination. But that's really a micro-optimization.