我有大約100k個Outlook郵件項目,每個正文約500-600個字符。我有一個必須搜索每個主體的580個關鍵字列表,然後在底部添加單詞。提高正則表達效率
我相信我已經增加了大多數功能的效率,但它仍然需要花費大量的時間。即使是100封電子郵件也需要4秒左右的時間。
我跑爲每個關鍵字列表兩種功能(290個關鍵字每個列表)。
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;
}
是否有反正我可以提高此功能的效率?
可能放緩下來的另一件事是,我使用的HTML敏捷性包通過一些節點導航,並拉出體(nSearch.InnerHtml)。 _keywordList是一個List項目,而不是一個數組。
別猜了,言歸正傳吧 – Paolo 2010-03-30 13:23:58
探查我dotTrace,但它不能在Outlook中的加載項工作。 – cam 2010-03-30 13:26:54
從我的經驗調用到COM API通常是一個瓶頸(在你的情況下檢索100K的項目),你唯一可以做的事情就是儘量減少這些調用的次數。但作爲已經由Paolo說這是最好的得到它探查或使用'StopWatch'類,如果你的分析器不支持插件。 – 2010-03-30 13:30:30