.Net 3.5中使用PLinq

来源:互联网 发布:证明四色定理 c语言 编辑:程序博客网 时间:2024/06/06 03:41
看了许多博客试图了解在.Net 3.5下使用PLinq
结果发现所有指向微软这些资源(似如Microsoft Parallel Extensions to Framework 3.5)的下载已经被撤销,无法找到,资源的页面重定向到其他的页面
感觉超级蛋疼,
后来无意找到一个dll成功使3.5下的Linq支持AsParallel()方法,对于这种方式实现并行查询是否存在什么问题作为菜鸟的我就不得而知了。
运行结果如下图,在这个简单的例子中发现使用了AsParallel后效率有极大的提升。 


附部分代码:
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

private static stringwithAsParallel(DCDataContext dc)
        {
            System.Diagnostics.Stopwatch stopwatch = new Stopwatch();
            IQueryable<tb_ticket> zz = null;
            stopwatch.Start(); 
            for (int i = 0; i < 20; i++)
            {
                zz=from t in dc.tb_tickets.AsParallel()    //where  blablabla省略
                        select t;
            }
            stopwatch.Stop(); //  停止监视
            TimeSpan timespan = stopwatch.Elapsed; //  获取当前实例测量得出的总时间
            double milliseconds = timespan.TotalMilliseconds;  //  总毫秒数
            return milliseconds.ToString();
         }

        private static string withOutAsParallel(DCDataContext dc)
        {
            System.Diagnostics.Stopwatch stopwatch = new Stopwatch();
            IQueryable<tb_ticket> zz = null;
            stopwatch.Start(); //  开始监视代码运行时间
            for (int i = 0; i < 20; i++)
            {
                zz=from t in dc.tb_tickets //WithoutAsParallel  where  blablabla省略
                        select t;
            }
            stopwatch.Stop(); 
            TimeSpan timespan = stopwatch.Elapsed; //  获取当前实例测量得出的总时间
            double milliseconds = timespan.TotalMilliseconds;  //  总毫秒数
            return milliseconds.ToString();
}
//Main函数
  static voidMain(string[] args)
        {
            DCDataContext dc = new DCDataContext();
           for (int i = 50; i > 0; i--)
            {
                  Console.WriteLine("NoParallel:" + withOutAsParallel(dc) + "ms" + " Parallel:" + withAsParallel(dc) + "ms");
                 Console.WriteLine("Parallel:" + withAsParallel(dc) + "ms" + " NoParallel:" + withOutAsParallel(dc) + "ms");
            }
        }
PS:
附件:http://download.csdn.net/detail/lin437922751/4653381 

将System.Threading.dll引用到项目中


原创粉丝点击