Если вы ищете только одну короткую строку, то ничто не будет намного быстрее, чем линейное сравнение, используемое strstr()
.Тем не менее, strstr()
особая обработка NUL
байтов почти наверняка не то, что вы хотите для изучения сетевого трафика, и вам лучше написать свою собственную реализацию, которая обрабатывает все байты одинаковыми и приемлемыми параметрами длины.*
Если вы ищете несколько строк, вам лучше использовать быстрый алгоритм сопоставления строк, такой как Aho-Corasick, или создать конечный автомат, который соответствует строкам, которые вы хотите, в нужном контексте, то есть парсере,Для синтаксического анализа в основном регулярной грамматики, такой как HTTP в C, компилятор конечного автомата ragel - мой выбор.