.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;
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++)
{
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省略
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();
}
}
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");
{
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引用到项目中
- .Net 3.5中使用PLinq
- 建议84:使用PLINQ
- 传统编程和.net plinq
- PLINQ
- Plinq
- PLinq
- 何时使用 Parallel.ForEach,何时使用 PLINQ
- 何时使用 Parallel.ForEach,何时使用 PLINQ
- C# 并行编程 之 PLINQ 基本使用
- 并行开发3——plinq的使用
- 1.4.3.2 使用 PLINQ 的声明式并行
- PLINQ 简介
- 8天玩转并行开发——第三天 plinq的使用
- C# 并行编程 之 PLINQ并行度的指定 和 ForAll的使用
- 8天玩转并行开发——第三天 plinq的使用
- PLINQ -> Parallel Extensions
- 并行编程(3):PLinq
- .NET中使用ORACLE
- VS2005 link error:找不到.lib ; unrecognized flag '-typedil' in 'p2'
- PyQt在Windows XP上的编译
- TCP/IP协议栈的基本工作原理
- XCode编译警告和错误解决方法集锦
- Android 2.1 源码结构分析
- .Net 3.5中使用PLinq
- GitHub安装SSH公钥
- 5个数求最值
- 原码、补码和移码
- GitHub常用命令
- 写给我的博士生们,希望你们能找到好工作
- C/S模式与B/S模式
- 9 随机化
- Git 存储过程探究