日期:2014-05-20  浏览次数:20767 次

【技术散分300】一个Linq的小例子
实际上,我读了许多google的mapreduce的文献,曾经尝试开发过并发的多服务器的数据库接口,并且也同时花了足足2天时间开发mapreduce程序(虽然最后只有几十行,但是控制逻辑复杂)。

在使用自己的mapreduce写了几个小程序以后,忽然发现我真的很蠢,原来PLinq早已经提供了更加强大的功能。

这里贴一个小例子,假设在asp.net应用中想打印 ~/app_data/Test_090724_WebUserControl.txt 中的文件的每一个字符的使用频率,就可以这样写:

C# code
        var fileNetUrl = this.ResolveUrl("~/app_data/Test_090724_WebUserControl.txt");
        var filePhysicalUrl = Server.MapPath(fileNetUrl);
        var chars = File.ReadAllLines(filePhysicalUrl).AsParallel().SelectMany(n => n.ToCharArray());
        var res = from c in chars group c by c into gc select new { charactor = gc.Key, count = gc.Count() };
        res = res.OrderBy(c => c.charactor);
        this.GridView1.DataSource = res;
        this.GridView1.DataBind();


当然,使用了微软并行库 Parallel Extensions 的2008年6月预览版来开发。

哎,我发现自己很蠢之后,就把这些天写的mapreduce相关的各种程序删除了。有了PLinq,得去在它的高起点上来建立自己的扩展技术,还要舍近求远起自己搞点低级的研究开发吗?

------解决方案--------------------
mapreduce~
------解决方案--------------------
SP1234又在推广PLinq了,呵呵...

可惜还在预览,等4.0出来要到年底了,.NET升级太慢了...
------解决方案--------------------
PLinq是比较老的叫法,好像后来改成Parallel了。
.NET2008需要装个ParallelExtensions_Jun08CTP.msi
------解决方案--------------------
.net并行库说是.net函数式编程典范?
------解决方案--------------------
唉,可惜咱沒有多核CPU啊!!
------解决方案--------------------
http://www.cnblogs.com/JeffreyZhao/archive/2009/02/24/simplify-async-programming-2-asynctaskdispatcher.html
其实多任务并行,任务分组,并且任务之间有依赖关系用这个挺好
------解决方案--------------------
在回帖,会用linQ写写代码。

还没有在实际项目里用。

公司今年4月份刚从vs 2003转到2008.
------解决方案--------------------
不知道你TXT文件放的是什么数据。。。
------解决方案--------------------
并行计算是发展趋势,与硬件发展同步
.NET Framework 4.0中PLINQ是不错
------解决方案--------------------
学习一下,现在学历LINQ,发现真的是个好东西。