Tengo aproximadamente 100 mil mensajes de correo de Outlook que tienen entre 500 y 600 caracteres por cuerpo. Tengo una lista de 580 palabras clave que deben buscar en cada cuerpo, luego anexar las palabras en la parte inferior.Aumento de Regex Efficiency
Creo que he aumentado la eficacia de la mayoría de las funciones, pero aún lleva mucho tiempo. Incluso para 100 correos electrónicos, toma alrededor de 4 segundos.
Ejecuto dos funciones para cada lista de palabras clave (290 palabras clave en cada lista).
public List<string> Keyword_Search(HtmlNode nSearch)
{
var wordFound = new List<string>();
foreach (string currWord in _keywordList)
{
bool isMatch = Regex.IsMatch(nSearch.InnerHtml, "\\b" + @currWord + "\\b",
RegexOptions.IgnoreCase);
if (isMatch)
{
wordFound.Add(currWord);
}
}
return wordFound;
}
¿De todos modos puedo aumentar la eficacia de esta función?
La otra cosa que podría ser la hace lenta es que utilizo HTML agilidad Paquete para navegar a través de algunos nodos y sacar el cuerpo (nSearch.InnerHtml). La _keywordList es un elemento List, y no una matriz.
no adivine, conseguir un generador de perfiles en él – Paolo
tengo dotTrace pero no funciona en perspectiva complementos. – cam
Desde mi experiencia, las llamadas a la API COM suelen ser un cuello de botella (en su caso, recuperar los 100k elementos) y lo único que puede hacer es tratar de reducir el número de esas llamadas. Pero como ya ha dicho Paolo, es mejor tener un generador de perfiles o utilizar la clase 'Cronómetro 'si su generador de perfiles no admite complementos. –