ConcurrentBag<int> list1 = new ConcurrentBag<int>();
Stopwatch stop1 = new Stopwatch();
stop1.Start();
Parallel.For(0, 10000, item =>
{
Thread.Sleep(1);
list1.Add(item);
});
stop1.Stop();
AppendLine("Count1:" + list1.Count() + " " + stop1.ElapsedMilliseconds);
List<int> list2 = new List<int>();
object synObj = new object();
Stopwatch stop2 = new Stopwatch();
stop2.Start();
//DateTime be = DateTime.Now;
Parallel.For(0, 10000, item =>
{
lock (synObj)
{
Thread.Sleep(1);
list2.Add(item);
}
});
// DateTime en = DateTime.Now;
stop2.Stop();
AppendLine("Count2:" + list2.Count() + " " + stop2.ElapsedMilliseconds );
List<int> list3 = new List<int>();
Stopwatch stop3 = new Stopwatch();
stop3.Start();
for(var item = 0;item<10000;item++)
{
Thread.Sleep(1);
list3.Add(item);
}
stop3.Stop();
AppendLine("Count3:" + list3.Count() + " " + stop3.ElapsedMilliseconds);
三次运行结果:
2017-05-25 17:06:42 Count1:10000 2856
2017-05-25 17:06:52 Count2:10000 10184
2017-05-25 17:07:02 Count3:10000 10043
2017-05-25 17:07:13 Count1:10000 1420
2017-05-25 17:07:23 Count2:10000 10075
2017-05-25 17:07:33 Count3:10000 9999
2017-05-25 17:15:27 Count1:10000 672
2017-05-25 17:15:37 Count2:10000 10456
2017-05-25 17:15:47 Count3:10000 10017
都不加sleep运行结果:
2017-05-25 17:17:28 Count1:10000 2
2017-05-25 17:17:28 Count2:10000 1
2017-05-25 17:17:28 Count3:10000 0
2017-05-25 17:17:29 Count1:10000 20
2017-05-25 17:17:29 Count2:10000 0
2017-05-25 17:17:29 Count3:10000 3
2017-05-25 17:17:30 Count1:10000 1
2017-05-25 17:17:30 Count2:10000 4
2017-05-25 17:17:30 Count3:10000 0
测试结果看出,不加sleep串行更快,加sleep并行更快,如果正式环境肯定会有比sleep(1)更长的延时,所以对于add操作并行还是有优势的。
分享到:
相关推荐
本示例“C#并行计算完整示例”着重展示了如何在C#中运用并行计算技术,包括pLINQ、Task以及Parallel For或Foreach。 首先,让我们详细了解一下pLINQ(Parallel Language Integrated Query)。pLINQ是LINQ(Language...
在本实验“C#实验--- A.3 矩阵并行计算练习”中,我们将深入探讨如何利用C#语言进行高效的矩阵运算,并利用多线程和并行处理技术提高计算速度。《C#网络应用编程》这门课程强调了在实际应用中,尤其是在大数据处理和...
### C#并行计算书籍《Professional Parallel Programming with C#》知识点概述 #### 一、书籍简介 《Professional Parallel Programming with C#》是一本专注于.NET 4.0并行计算技术的专业书籍,由Gastón C. ...
本文将深入探讨C#中的并行计算,主要关注`Parallel.Invoke()`、`Parallel.For()`以及`Parallel.ForEach()`这三个关键方法。 首先,`Parallel.Invoke()`方法允许开发者同时执行多个委托,这在需要执行一系列独立任务...
.NET Framework 4 引入了一组强大的并行计算工具,称为`.NET Parallel`,它使得开发者可以轻松地利用多核处理器的优势,实现高效的多线程和高并发编程。这一技术的引入大大提升了应用程序的性能,特别是在处理大数据...
《.NET高级并行编程 Apress.Pro.dotNET.4.Parallel.Programming.in.CSharp.May.2010》这本书深入探讨了.NET框架4.0中的并行编程技术,主要针对C#语言进行讲解。在现代计算环境中,利用多核处理器的优势进行并行计算...
本练习主要关注使用C#语言在网络应用编程中实现矩阵并行计算,结合WPF(Windows Presentation Foundation)进行用户界面的构建。这是一次将理论与实践相结合的学习机会,旨在提升开发者在多核处理器环境下利用并行...
C#中实现并行计算可以借助`System.Threading.Tasks`命名空间下的类,比如`Task`和`Parallel`。`Parallel`类提供了用于并行执行任务的方法,如`Parallel.For`和`Parallel.ForEach`。对于快速排序,我们可以在分区过程...
### .NET并行计算技术基础 #### 一、并行计算概述 并行计算作为一种重要的计算模式,近年来随着多核处理器的普及和发展变得越来越重要。本文旨在系统介绍.NET Framework 4.0中引入的并行扩展(Parallel Extensions...
在.NET编程环境中,`Parallel.ForEach`是一个非常有用的并行处理工具,它允许开发者将数据集中的每个元素在多个线程上并行处理,以提高应用程序的执行效率。然而,正如标题所指出的,`Parallel.ForEach`可能会遇到...
在C#编程中,利用并行编程可以极大地提高应用程序的执行效率,特别是在处理大量数据或进行计算密集型任务时。本示例集包含了C#并行编程的各种应用场景,包括使用Task、Parallel类以及FastImage类处理图像,以及一个...
数据并行是并行计算的一种形式,主要通过PLINQ(Parallel Language Integrated Query)实现。PLINQ结合了LINQ查询的简洁性和并行计算的性能优势,允许开发者在不改变原始查询结构的情况下,轻松地将查询转换为并行...
C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验三 矩阵并行计算练习 关键技术是将任务利用Action委托,交给Parallel.For 或者 Parallel.ForEach并行运行,并利用WPF控件的Dispatcher.Invoke 显示处理...
例如,`Parallel.ForEach`允许并行遍历集合,将任务分割到多个处理器核心上,提高计算密集型任务的速度。但需要注意的是,不恰当的并行化可能导致过多的上下文切换,反而降低性能。 5. **示例(TaskDemo)**: 提供...
C#提供了多种并行编程工具,如Task Parallel Library (TPL) 和 PLINQ,使得开发者可以方便地编写并行代码,提高程序运行速度。 二、C#并行编程基础 1. **Task Parallel Library (TPL)**:这是.NET Framework的一...
本文将深入探讨如何使用四阶龙格-库塔法(Runge-Kutta 4th order method)来解决此类问题,并结合C#编程语言实现并行计算优化性能。 涡激振动是指流体与结构相互作用过程中,由于流体涡旋的生成和脱落,导致结构...
Task Parallel Library (TPL) 是C#并行编程的核心组件,它提供了一种声明式的方法来表达并行操作,简化了多线程编程的复杂度。TPL包括Task类和Task Parallel Library中的其他类型,用于创建和管理任务,支持异步编程...
《C#并行编程高级教程:精通NET 4 Parallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单...
1. **Task并行库(TPL)**: C#中的并行编程主要依赖于.NET Framework提供的Task Parallel Library (TPL)。TPL使得编写多线程和多任务的代码变得更加简洁和高效,它提供了`Task`类,用于表示异步操作。 2. **Task类**:...
《Professional Parallel Programming with C#》是一本专注于C#编程中的并行处理技术的专业书籍。这本书深入探讨了如何利用C#语言特性以及.NET框架提供的工具来实现高效、可靠的并行编程。以下将详细介绍其中的一些...