J'ai environ 100k éléments de courrier Outlook qui ont environ 500-600 caractères par corps. J'ai une liste de 580 mots-clés qui doivent chercher dans chaque corps, puis ajouter les mots en bas.Augmentation de l'efficacité de Regex
Je crois que j'ai augmenté l'efficacité de la majorité de la fonction, mais cela prend encore beaucoup de temps. Même pour 100 courriels, cela prend environ 4 secondes.
Je cours deux fonctions pour chaque liste de mots-clés (290 mots-clés chaque liste).
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;
}
Y at-il de toute façon je peux augmenter l'efficacité de cette fonction?
L'autre chose qui pourrait ralentir est que j'utilise HTML Agility Pack pour naviguer à travers certains nœuds et retirer le corps (nSearch.InnerHtml). Le _keywordList est un élément de la liste, et non un tableau.
Ne pas deviner, obtenir un profileur sur elle – Paolo
je dotTrace, mais il ne fonctionne pas sur les perspectives Addins. – cam
D'après mon expérience, les appels dans l'API COM sont généralement un goulot d'étranglement (dans votre cas, la récupération des 100 000 éléments) et la seule chose que vous pouvez faire est d'essayer de réduire le nombre de ces appels. Mais comme l'a déjà indiqué Paolo, il est préférable d'utiliser un profileur ou d'utiliser la classe 'StopWatch' si votre profileur ne supporte pas les compléments. –