.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一)
来源:互联网 发布:hp1510清零软件 编辑:程序博客网 时间:2024/05/24 05:36
引言
随着CPU多核的普及,编程时充分利用这个特性越显重要。本文首先用传统的嵌套循环进行数组填充,然后用.NET 4.0中的System.Threading.Tasks提供的Parallel Class来并行地进行填充(当然这里也用到嵌套循环),通过对比发现其中差异。主要内容如下:
- 通常的数组填充
- 并行的组数填充
- 性能比较
- System.Threading.Tasks分析,这个将在续篇.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)中介绍
1、通常的数组填充
首先看如下代码:
通常的数组填充
上面的粗体红色显示的几行代码就是实现数组填充,这个很好理解不用多费口舌。补充说明的是:上面的Utility是为了统计性能而编写的一个类,它主要就是用到了Stopwatch对象——它提供一组方法和属性,可用于准确地测量运行时间。Utility的代码如下:
Utility类
2、并行的组数填充
为了充分利用CPU的多核,我们编写如下代码:
并行的数组填充
留意上面的红色粗体显示的几行代码,它利用了Parallel.For Method (Int32, Int32, Action<Int32>)方法,Parallel类位于命名空间System.Threading.Tasks中,它支持并行循环。此Parallel.For方法使得它里面的迭代可能并行地运行,注意到上述代码中它的第三个参数是一个委托。在(0,calcVal)之间,这个委托将被调用。
3、性能比较
现在我们来测试一下,上面两种方法的执行性能差异如何,下载源码。其实,核心代码已经在上面贴出来了,现在注意是编写实例来测试,代码主要如下:
性能比较测试
运行之后得到如下结果:(不同电脑配置不同,得出结果不同)
图1、性能比较
从结果可以看出,并行的数组填充比通常的数组填充性能更高。
- System.Threading.Tasks分析,这个将在续篇.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)中介绍……
阅读全文
0 0
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一)
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)
- .NET(C#) Internals: 鲜为人知的??
- .NET(C#) Internals: 鲜为人知的??
- (一)初步了解并行计算、OpenMP
- 对.net的初步了解
- .Net中并行计算的了解
- C++.net中的常见问题一(关于数组)
- 【ASP.NET】初步了解
- ASP.net初步了解
- 一个验证码的例子(asp.net c#)
- ASP.NET 中的并行
- ADO.NET之初步了解
- .NET 实现并行的几种方式(一)
- ASP.NET中的WebService一个简单的例子
- 一个不错的.NET例子
- 一个不错的.NET例子
- .NET(C#) Internals: .NET Framework中已使用的设计模式
- .NET(C#) Internals: as a developer, .net framework in my eyes
- 随谈
- 百度判断手机访问还是PC访问
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)
- 矩阵相乘
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一)
- PureMVC(AS3)剖析:开篇
- org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"] oFilter(Applicatio
- 排序算法
- pt工具常用命令
- SCALA的特征 -(<scala编程思想>)
- 【白兔兔】- 用LaTeX排版第八届中国大学生数学竞赛决赛(数学类)试卷
- 走在网页游戏开发的路上(十)
- 操作系统之进程的描述和控制