Я понимаю преимущество использования RegexOptions.Compiled - он улучшает время выполнения приложения, используя регулярное выражение в скомпилированной форме вместо того, чтобы интерпретировать его во время выполнения. Хотя использование этого не рекомендуется для приложений, которые уже не работают во время запуска.
Но если мое приложение может немного увеличить время запуска -
каковы другие сценарии, в которых я НЕ должен использовать RegexOptions.Compiled?
Как примечание, я вызываю этот метод несколько раз -
private static string GetName(string objString)
{
return Regex.Replace(objString, "[^a-zA-Z&-]+", "");
}
Итак, этот метод вызывается с разными значениями для 'objString' (хотя значения для objString также могут повторяться).
Считаете ли вы, что это хорошо/не хорошо использовать RegexOptions.Compiled здесь?
Любая веб-ссылка будет действительно полезна.
Спасибо!
ИЗМЕНИТЬ
Я тестировал свое веб-приложение с помощью
-
RegexOptions.Compiled
и - Выполнить
Regex
как переменную класса
Но не удалось найти большой разницы во времени, затрачиваемом моим веб-приложением - Единственное, что я заметил в обоих сценариях, это то, что в первый раз, когда приложение загружает его, в два раза больше времени, чем при последовательных загрузках страниц, и это независимо от того, использую ли я RegexOptions.Compiled или нет.
Любые комментарии для -
почему мое веб-приложение занимает больше времени для обработки Regex для первого раза и времени, которое сокращается почти до половины или меньше при последующих нагрузках. Есть ли встроенное кэширование или какая-то другая функция .net здесь.
Постскриптум Эта вещь такая же, если я использую RegexOptions.Compiled или нет.