Только если скорость очень важна
Использовать строки фиксированного размера (32-64 байта очень хорошо), инициализируются всеми нулями и затем заполняются строковыми данными.
(Обратите внимание, что здесь под «строкой» я подразумеваю необработанный код C или собственный пользовательский класс строк, , а не класс std :: string.)
Используйте memcpy и memcmp для сравнения этих строк, всегда используя фиксированный размер буфера.
Вы можете получить даже быстрее, чем memcmp, если убедитесь, что ваши строковые буферы выровнены по 16 байтов, поэтому вы можете использовать SSE2, и вам нужно только проверить на равенство, а не больше или меньше, чем. Даже без SSE2 вы можете сравнивать равенство, используя вычитание в кусках размером в слово.
Причина, по которой эти методы ускоряют процесс, заключается в том, что они убирают тест сравнения байтов за байтами из уравнения. Поиск завершающего '\0'
или байта, который отличается, стоит дорого, потому что тестирование и ветвление трудно предсказать и передать.