LINQ循环在一段时间后变慢

时间:2012-01-07 12:34:01

标签: linq optimization

我正在运行一个代码,使用来自100万个文档的正则表达式来提取超链接,一开始,代码最初运行得非常快(大约每秒200个文档)但后来变得非常慢,慢到10个文档每秒,有没有人经历过这个?代码如下。

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++;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

尝试将foreach循环更改为for i = 0到numOfDocs,然后通过docs [i]获取。另外,什么是反击?