DotNet并行计算的使用误区

  并行计算无疑是.NET Framework平台的一大亮点,它自动的将一个任务分解,并以并发的形式执行,程序员不用操心各任务之间的协作和同步问题,这使得可以更加专注于业务的实现。

  .NET 中的 TPL(Task Parallel Library),中文意思是任务并行库,它的设计是为了能更简单地编写可自动使用多处理器的托管代码。使用该库,用户可以非常方便地用现有序列代码表达潜在并行性,这样序列代码中公开的并行任务将会在所有可用的处理器上同时运行,通常这会大大提高速度。

  但是,从网上很多已经发布的并行计算的例子来讲,有很多存在一定的误区甚至是误导,这导致了一线编程人员产生一些错误的思路,它们多是通过示例讲述并行计算的性能优越性,似乎程序人员可以不费吹灰之力就能将程序性能提升N倍,如果这些想法没有经过比较就应用于实际,那么就会造成一定的损失。这篇文章就来聊聊关于合理使用并行计算的问题,供大家参考,这些误区主要包括:

  1. 只要使用并行就会提高程序性能

  2. 并行循环嵌套越多程序性能越高

  3. 并行计算是运行时的事

  下面让我们来一个个的讲解这些误会。

  ● 误区一 .只要使用并行就会提高程序性能

  实时并不是这样,实际上并行计算的使用对前提要求非常严格,一般情况大量使用并行计算不但不会提升性能,反而会适得其反,下面有两个Case给大家说明。

  Case 1. 使用Thread.Sleep()比较并行与单行程序的性能并不客观。 

  在许多并行计算与单行方式程序性能比较的例子中,很多都包含类似Thread.Sleep()的语句,运行这样的Demo我们确实看到,并行的时间结果竟然提升如此许多,但是你有没有仔细研究一下时间降低的原因呢?

  有如下两段代码:

  Code Part A:

for (int i = 0; i < 10; i++) 

{

a
= i.ToString();

Thread.Sleep(
200);

}

NET技术DotNet并行计算的使用误区,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。