Есть ли способ улучшить скорость/эффективность этого метода? Он называется десятками тысяч раз в моем коде и замедляет работу системы, которую я разрабатываю.Общие проблемы с частотой при сравнении строк с использованием RegEx
В принципе, «Поле» имеет «имя» и «значение», и мне нужно проверить, совпадает ли оно с именем/значением соответствующего свойства в моем классе. Поле. Значение также может быть регулярным выражением. Я предполагаю, что регулярное выражение замедляет работу.
private bool FieldMatch(Field field)
{
var propValue = GetPropertyValue(field.Name);
var regEx = new Regex(field.Value, RegexOptions.IgnoreCase);
var stringMatch = string.Compare(propValue, field.Value, StringComparison.InvariantCultureIgnoreCase)
return (stringMatch == 0) || regEx.IsMatch(propValue);
}
Проходит ли тот же самый 'field.Value' в несколько раз? Раньше я обнаружил, что построение объекта «Regex» может быть медленным, поэтому, если вы можете кэшировать его экземпляры для данного выражения, это может улучшить производительность. –
Так что я мог бы предварительно скомпилировать RegEx в экземпляре класса Field , возможно? – jimbo
Вы можете заменить значение регулярным выражением, которое будет создано только один раз. Или иметь кэш или регулярные выражения, если значения не будут сильно отличаться. – Vinzz