我相信我已经提高了大部分功能的效率,但它仍然需要很多时间.即使是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 Agility Pack来浏览一些节点并拉出正文(nSearch.INNERHTML). _keywordList是List项,而不是数组.
解决方法 我假设COM调用nSearch.INNERHTML很慢,你重复调用你正在检查的每个单词.您可以简单地缓存调用的结果:public List<string> Keyword_Search(HTMLNode nSearch){ var wordFound = new List<string>(); // cache inner HTML string INNERHTML = nSearch.INNERHTML; foreach (string currWord in _keywordList) { bool isMatch = Regex.IsMatch(INNERHTML,RegexOptions.IgnoreCase); if (isMatch) { wordFound.Add(currWord); } } return wordFound;}
另一个优化是Jeff Yates建议的优化.例如.通过使用单一模式:
string pattern = @"(\b(?:" + string.Join("|",_keywordList) + @")\b)";总结
以上是内存溢出为你收集整理的c# – 提高正则表达式效率全部内容,希望文章能够帮你解决c# – 提高正则表达式效率所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)