`
guochunyang2004
  • 浏览: 82306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C# Parallel 并行计算测试

 
阅读更多


	    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#并行计算完整示例”着重展示了如何在C#中运用并行计算技术,包括pLINQ、Task以及Parallel For或Foreach。 首先,让我们详细了解一下pLINQ(Parallel Language Integrated Query)。pLINQ是LINQ(Language...

    C#实验--- A.3 矩阵并行计算练习

    在本实验“C#实验--- A.3 矩阵并行计算练习”中,我们将深入探讨如何利用C#语言进行高效的矩阵运算,并利用多线程和并行处理技术提高计算速度。《C#网络应用编程》这门课程强调了在实际应用中,尤其是在大数据处理和...

    C#并行计算书籍Professional Parallel Programming with CSharp

    ### C#并行计算书籍《Professional Parallel Programming with C#》知识点概述 #### 一、书籍简介 《Professional Parallel Programming with C#》是一本专注于.NET 4.0并行计算技术的专业书籍,由Gastón C. ...

    C# 并行计算示例

    本文将深入探讨C#中的并行计算,主要关注`Parallel.Invoke()`、`Parallel.For()`以及`Parallel.ForEach()`这三个关键方法。 首先,`Parallel.Invoke()`方法允许开发者同时执行多个委托,这在需要执行一系列独立任务...

    .NET Parallel 并行计算 多线程,高并发

    .NET Framework 4 引入了一组强大的并行计算工具,称为`.NET Parallel`,它使得开发者可以轻松地利用多核处理器的优势,实现高效的多线程和高并发编程。这一技术的引入大大提升了应用程序的性能,特别是在处理大数据...

    .net高级并行编程 Apress.Pro.dotNET.4.Parallel.Programming.in.CSharp.May.2010

    《.NET高级并行编程 Apress.Pro.dotNET.4.Parallel.Programming.in.CSharp.May.2010》这本书深入探讨了.NET框架4.0中的并行编程技术,主要针对C#语言进行讲解。在现代计算环境中,利用多核处理器的优势进行并行计算...

    A.3矩阵并行计算练习

    本练习主要关注使用C#语言在网络应用编程中实现矩阵并行计算,结合WPF(Windows Presentation Foundation)进行用户界面的构建。这是一次将理论与实践相结合的学习机会,旨在提升开发者在多核处理器环境下利用并行...

    并行计算 c# 快速排序

    C#中实现并行计算可以借助`System.Threading.Tasks`命名空间下的类,比如`Task`和`Parallel`。`Parallel`类提供了用于并行执行任务的方法,如`Parallel.For`和`Parallel.ForEach`。对于快速排序,我们可以在分区过程...

    .NET并行计算技术基础

    ### .NET并行计算技术基础 #### 一、并行计算概述 并行计算作为一种重要的计算模式,近年来随着多核处理器的普及和发展变得越来越重要。本文旨在系统介绍.NET Framework 4.0中引入的并行扩展(Parallel Extensions...

    Parallel.ForEach的卡死现象(线程操作问题C#源码实例)

    在.NET编程环境中,`Parallel.ForEach`是一个非常有用的并行处理工具,它允许开发者将数据集中的每个元素在多个线程上并行处理,以提高应用程序的执行效率。然而,正如标题所指出的,`Parallel.ForEach`可能会遇到...

    C#并行编程完整示例

    在C#编程中,利用并行编程可以极大地提高应用程序的执行效率,特别是在处理大量数据或进行计算密集型任务时。本示例集包含了C#并行编程的各种应用场景,包括使用Task、Parallel类以及FastImage类处理图像,以及一个...

    浅谈.Net下的多线程和并行计算(全集).pdf

    数据并行是并行计算的一种形式,主要通过PLINQ(Parallel Language Integrated Query)实现。PLINQ结合了LINQ查询的简洁性和并行计算的性能优势,允许开发者在不改变原始查询结构的情况下,轻松地将查询转换为并行...

    C#网络应用编程实验 矩阵并行计算练习

    C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验三 矩阵并行计算练习 关键技术是将任务利用Action委托,交给Parallel.For 或者 Parallel.ForEach并行运行,并利用WPF控件的Dispatcher.Invoke 显示处理...

    C#异步并行编程示例

    例如,`Parallel.ForEach`允许并行遍历集合,将任务分割到多个处理器核心上,提高计算密集型任务的速度。但需要注意的是,不恰当的并行化可能导致过多的上下文切换,反而降低性能。 5. **示例(TaskDemo)**: 提供...

    C#并行实例

    C#提供了多种并行编程工具,如Task Parallel Library (TPL) 和 PLINQ,使得开发者可以方便地编写并行代码,提高程序运行速度。 二、C#并行编程基础 1. **Task Parallel Library (TPL)**:这是.NET Framework的一...

    用于FLUENT计算结构单自由度涡激振动,采用四阶龙哥库塔法,并设置了并行计算.zip

    本文将深入探讨如何使用四阶龙格-库塔法(Runge-Kutta 4th order method)来解决此类问题,并结合C#编程语言实现并行计算优化性能。 涡激振动是指流体与结构相互作用过程中,由于流体涡旋的生成和脱落,导致结构...

    C#并行编程高级教程(中文版)

    Task Parallel Library (TPL) 是C#并行编程的核心组件,它提供了一种声明式的方法来表达并行操作,简化了多线程编程的复杂度。TPL包括Task类和Task Parallel Library中的其他类型,用于创建和管理任务,支持异步编程...

    C#并行编程高级教程

    《C#并行编程高级教程:精通NET 4 Parallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单...

    C# 并行编程示例源码

    1. **Task并行库(TPL)**: C#中的并行编程主要依赖于.NET Framework提供的Task Parallel Library (TPL)。TPL使得编写多线程和多任务的代码变得更加简洁和高效,它提供了`Task`类,用于表示异步操作。 2. **Task类**:...

    Professional Parallel Programming with C#

    《Professional Parallel Programming with C#》是一本专注于C#编程中的并行处理技术的专业书籍。这本书深入探讨了如何利用C#语言特性以及.NET框架提供的工具来实现高效、可靠的并行编程。以下将详细介绍其中的一些...

Global site tag (gtag.js) - Google Analytics