Самый быстрый способ сравнения строк в C - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы знать, существуют ли еще более быстрые способы сравнения строк в C, чем использование strcmp(), особенно когда мне нужно сравнить строку с несколькими предопределенными строками с помощью оператора switch .В моем приложении сравниваемая строка может иногда достигать 1000 символов, поэтому я просто думал, достаточно ли strcmp() или существует лучший и эффективный способ, с которым я не знаком.На самом деле я работаю над проектом IoT с низким энергопотреблением, где больше циклов ЦП требует энергии.

1 Ответ

0 голосов
/ 01 октября 2018

Звучит не так, как будто проблема связана с самим strcmp, как с тем, как вы его используете.

Самый быстрый способ сравнить строки с таблицей предопределенных строк,чтобы убедиться, что строки отсортированы в алфавитном порядке, а затем использовать бинарный поиск.Где strcmp действует как функция сравнения.Стандарт C bsearch может или не может быть осуществимым во встроенной системе.В противном случае это довольно просто реализовать самостоятельно.

То есть, если количество строк не велико.Тогда в какой-то момент некоторые хэш-таблицы будут работать лучше, чем поиск.Чтобы получить точный ответ о том, что работает лучше всего, нужны все детали данных.

С помощью строк фиксированной длины вы можете немного улучшить производительность, используя вместо этого memcmp - таким образом, вы этого не сделаетедолжны проверить против нулевого завершения.Но это действительно микрооптимизация.

...