Мне нужно найти потенциально очень большую структуру байтовых данных (до 4 ГБ) для заданного шестнадцатеричного значения.Проблема заключается в том, что строковый ввод шестнадцатеричных значений может иметь любой размер, включая нечетное число, например «ABC».Вместо того, чтобы преобразовывать байтовые данные в строковые данные и выполнять поиск строк (что я и сделал FWIW), я задаюсь вопросом о, возможно, более эффективном алгоритме, который выполняет поиск по существу по клевам.
Учитывая размер источника данных, поиск может быть выполнен по сегментам, конечно.Выходные данные в идеале должны быть перечисляемыми из начальных индексов или адресов совпадений.Для целей этого вопроса давайте предположим, что структура данных представляет собой byte[]
, а выходные данные - это индекс int
и смещение клочка (например, bool firstNibbleMatch
).
Перед тем, как приступить к его опробованиюкакие-нибудь идеи относительно профилирования, затрат на операции сдвига и преобразования ascii ( будь то с помощью библиотеки C # или небезопасного кода и т. д.) или каких-либо других непредвиденных обстоятельств?Моя главная забота - производительность.Будет ли этот подход еще лучше работать в теории?