C#-4.0-新特性之并行运算(Parallel).docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /skynet/archive/2010/05/11/1732515.html .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一) 引言 随着CPU多核的普及,编程时充分利用这个特性越显重要。本文首先用传统的嵌套循环进行数组填充,然后用.NET 4.0中的 HYPERLINK /en-us/library/system.threading.tasks(v=VS.100).aspx System.Threading.Tasks提供的 HYPERLINK /en-us/library/system.threading.tasks.parallel(VS.100).aspx \t _blank Parallel Class来并行地进行填充(当然这里也用到嵌套循环),通过对比发现其中差异。主要内容如下: 通常的数组填充 并行的组数填充 性能比较 System.Threading.Tasks分析,这个将在续篇.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)中介绍 1、通常的数组填充 首先看如下代码: using System; namespace ParallelForSample { public class SingleCore { public static void Calculate(int calcVal) { Utility util = new Utility(); util.Start(); int[,] G = new int[calcVal, calcVal]; for (int k = 0; k calcVal; k++) for (int i = 0; i calcVal; i++) for (int j = 0; j calcVal; j++) G[i, j] = Math.Min(G[i, j], G[i, k] + G[k, j]); util.Stop(); } } } 上面的粗体红色显示的几行代码就是实现数组填充,这个很好理解不用多费口舌。补充说明的是:上面的Utility是为了统计性能而编写的一个类,它主要就是用到了 HYPERLINK /zh-cn/library/ebf7z0sw(v=VS.85).aspx \t _blank Stopwatch对象——它提供一组方法和属性,可用于准确地测量运行时间。Utility的代码如下: public class Utility { private Stopwatch _stopwatch; public void Start() { _stopwatch = new Stopwatch(); _stopwatch.Start(); } public void Stop() { _stopwatch.Stop(); TimeSpan ts = _stopwatch.Elapsed; string elapsedTime = String.Format({0:00}:{1:00}:{2:00}.{3:00}, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine(Time taken : {0}, elapsedTime); } } 利用它我们就可以对数组填充所耗费的时间进行计算了。 2、并行的组数填充 为了充分利用CPU的多核,我们编写如下代码: using System; using System.Threading.Tasks; namespace ParallelForSample { public class MultiCore { public static void Calculate(int calcVal) { Utility util = new Utility(); util.Start(); int[,] G = new int[calcVal, calcV

文档评论(0)

wx171113 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档