我有大约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