Какой самый быстрый способ разбора строк в C #?
В настоящее время я просто использую индексирование строк (string[index]
), и код выполняется достаточно разумно, но я не могу не думать, что непрерывная проверка диапазона, выполняемая средством доступа к индексам, должна что-то добавлять.
Итак, мне интересно, какие методы я должен рассмотреть, чтобы дать ему толчок.Это мои первые мысли / вопросы:
- Используйте такие методы, как
string.IndexOf()
и IndexOfAny()
, чтобы найти интересующие вас символы.Это быстрее, чем сканирование строки вручную с помощью string[index]
? - Использование регулярных выражений.Лично мне не нравятся регулярные выражения, так как мне сложно их поддерживать, но могут ли они выполняться быстрее, чем сканирование строки вручную?
- Использовать небезопасный код и указатели.Это исключило бы проверку диапазона индекса, но я читал, что небезопасный код не будет работать в ненадежных средах.Каковы именно последствия этого?Означает ли это, что вся сборка не будет загружаться / запускаться, или только код, помеченный как небезопасный, откажется запускаться?Библиотека может потенциально использоваться во многих средах, поэтому было бы неплохо вернуться к более медленному, но более совместимому режиму.
- Что еще я мог бы рассмотреть?
Примечание: я должен сказать, что строки, которые я анализирую, могут быть достаточно большими (скажем, 30 КБ) и в произвольном формате, для которого нет стандартного синтаксического анализатора .NET.Кроме того, производительность этого кода не является сверхкритической, так что это отчасти просто теоретический вопрос любопытства.