0
我正在運行代碼,從一百萬個文檔中使用正則表達式提取超鏈接,一開始,代碼運行速度非常快(大約每秒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