发展历史.NET 3.5-4.0 并行计算的支持

当往底微处理器发展历史中,硬件技术之上进,特别是CPU频率的无休止提高,总是为软件带来更胜似的性能提升。从386暨586,从赛扬到奔腾,每次CPU频率的升官,都带软件性能的大幅提升,而软件无需召开另外移。如果发生客户抱怨你的软件性能不精彩,我们随便需着急,只待提升到更强频率之CPU就可了。当单核CPU的效率发展及3G从此,再向上进步就是遇到了技能瓶颈,单中心CPU的腾飞都到达一个终端,硬件厂商不得不改变而通往多按芯CPU发展,在平颗芯片中加入两单甚至多单运算核心,通过核心之加码,来提高芯片总的效率。当硬件通过增加运算核心来增强性时,由于被该架构的影响,软件并无克充分地方便多只运算核心所带动的性质提升,甚至有些上性能还怀有减退。在这种场面下,开发者不得不改应用程序的架和开发方法,以承诺本着这种多对的大势,使得自己之软件可尽管利于硬件升级所带动的属性提升。

用作晚辈开发平台,Visual Studio
2010加大了针对互相运算的支持。微软正使尽量生之限定外的开发者都能够快速而方便地开展并行计算的出,不管他利用的黑白托管代码还是.NET
Framework。从而将开发者从麻烦而复杂的多线程开发中解放出来,将再也多的精力放到业务逻辑上。

  • Visual Studio IDE对并行计算开发的大度支撑。Visual Studio
    2010供了一个“并行性能分析器”,它可以帮忙我们解析应用程序的性能瓶颈,找到需要并行处理和得展开并行处理的地方,并因图形化的花样表现出。
  • 非托管的C++库和编译器对并行计算的支持
  • .NET Framework 3.5/4.0
    对并行计算的雅量支持,包括PLINQ、并行语言语句等等

正文讨论的是.net 3.5/4.0针对并行计算的性差别,采用的事例是Visual Studio
2010  Beta2 Training
Kit的Demo代码.
在谈论之前先想起一下.NET 的互动组件:

出于并行计算是以一个干活职责进展分解以并作执行,因此,任何一个支撑并行计算的软件开发与运行平台都不能不解决这些出现执行的分段任务中的相互协作问题,比如:

  • 一个子任务要拭目以待其它子任务的姣好,多个子任务到位后才允许实施下一个子任务(即所谓fork-join),
  • 一个子职责了晚自动启动多单下级子任务的推行
  • 同意一个职责中途取消
  • ……

.NET 3.5/4.0透过对已经部分基类库进行扩张与增长,满足了上述要求。.NET 给
“System.Threading”
命名空间多了片新的好像,同时对一些就出像样为进行了调整和优化。另外,针对中途取消线程或作务执行及时无异实际上开发被老常见的急需,提供了一个联取消模型。最酷之变型是.NET为基类库提供了差不多个及并行计算密切相关的切近,并以它们统一叫“并行扩展(Parallel
Extensions)”。

.NET
3.5通过DevLabs发布了Reactive扩展遭遇含的类库为并行处理提供支撑。Reactive扩展对象是简化异步及事件驱动程序的构建,可参看InfoQ的稿子微软发布Reactive框架,简化异步及事件驱动编程。下述.net
3.5的例子代码的运作要求下载Reactive扩展。

事先介绍一下自家之机器配置,单CPU对审批:

发展历史 1

下的事例来自Visual Studio 2010  Beta2 Training
Kit的ParallelBabyNames:

.net 3.5下的运转结果:

发展历史 2

.net 4的运作结果:

发展历史 3

从上述例子的运行结果来拘禁,.net 4的特性要比.net 3.5设高,.net 3.5跟.net
4.0之并行处理能力支撑及基本持平。

Visual studio 2010 and parallel computing for developer resources

http://blogs.msdn.com/hale/archive/2010/03/18/visual-studio-2010-and-parallel-computing-for-developer-resources.aspx

发表评论

电子邮件地址不会被公开。 必填项已用*标注