LINQ循环在一段时间后变得越来越慢
问题描述:
我正在运行代码,从一百万个文档中使用正则表达式提取超链接,一开始,代码运行速度非常快(大约每秒200个文档),但后来变得非常快速度慢,慢到每秒10个文档,有没有人经历过这个?代码如下。LINQ循环在一段时间后变得越来越慢
class Program
{
static void Main(string[] args)
{
ExtractHyperLinks();
}
private static void ExtractHyperLinks()
{
DataContext dc = new DataContext();
var docs = from p in dc.docs
select p;
Regex reUrl = new Regex(@"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
int counter = 0;
foreach (Document d in docs)
{
Match m = reUrl.Match(tweet.Text);
if (m.Success)
{
Hyperlink h = new Hyperlink();
h.Url = m.Value;
dc.Hyperlinks.InsertOnSubmit(h);
dc.SubmitChanges();
Console.WriteLine(h.Url);
}
counter++;
}
}
}
尝试'新的正则表达式(...,RegexOptions.Compiled)'。 – 2012-01-07 12:36:15
Console.WriteLine不是一个非常快速的调用 – Joe 2012-01-07 12:38:09
您也可以尝试在循环外部移动SubmitChanges,可能会提高性能。 – Magnus 2012-01-07 12:46:49