Эффективный алгоритм поиска данных по клевам? - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно найти потенциально очень большую структуру байтовых данных (до 4 ГБ) для заданного шестнадцатеричного значения.Проблема заключается в том, что строковый ввод шестнадцатеричных значений может иметь любой размер, включая нечетное число, например «ABC».Вместо того, чтобы преобразовывать байтовые данные в строковые данные и выполнять поиск строк (что я и сделал FWIW), я задаюсь вопросом о, возможно, более эффективном алгоритме, который выполняет поиск по существу по клевам.

Учитывая размер источника данных, поиск может быть выполнен по сегментам, конечно.Выходные данные в идеале должны быть перечисляемыми из начальных индексов или адресов совпадений.Для целей этого вопроса давайте предположим, что структура данных представляет собой byte[], а выходные данные - это индекс int и смещение клочка (например, bool firstNibbleMatch).

Перед тем, как приступить к его опробованиюкакие-нибудь идеи относительно профилирования, затрат на операции сдвига и преобразования ascii ( будь то с помощью библиотеки C # или небезопасного кода и т. д.) или каких-либо других непредвиденных обстоятельств?Моя главная забота - производительность.Будет ли этот подход еще лучше работать в теории?

...