C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
来源:互联网 发布:mmd舞蹈动作数据 编辑:程序博客网 时间:2024/04/30 11:27
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Threading.Tasks;using System.Collections.Concurrent;namespace ConsoleApplication1{ class Program { /* * 测试分析结果 * Parallel.For、Parallel.Foreach发挥出了平行运算的优势,将效率提高了接近一半左右。 * * 测试总结 * 对于Parallel.For、Parallel.Foreach的使用应该要特别小心, * 它们的优势是处理列表很长,且对列表内的元素进行很复杂的业务逻辑,且不会使用共享资源, * 只针对自身的业务逻辑处理,方才能提升效率。 * 因为如果逻辑过于简单的话,创建线程的花费将大于业务执行的花费,得不偿失。 */ static void Main(string[] args) { //产生测试资料 List<int> testData = new List<int>(); Random Rand = new Random(); //产生乱数列表 for (int i = 0; i < 1000000; i++) { testData.Add(Rand.Next(1000)); } //打印正确结果 Console.WriteLine(testData.Sum()); for (int i = 0; i < 5; i++) { Console.WriteLine(); TestFor(testData); TestParallelFor(testData); TestParallelForeach(testData); } Console.ReadKey(); } static void TestFor(List<int> testData) { DateTime time1 = DateTime.Now; foreach (var item in testData) { item.ToString(); } Console.WriteLine(string.Format("ForEach: t{0} in {1}", testData.Sum(), (DateTime.Now - time1).TotalMilliseconds)); } static void TestParallelFor(List<int> testData) { DateTime time1 = DateTime.Now; Parallel.For(0, testData.Count, (i, loopState) => { testData[i].ToString(); }); Console.WriteLine(string.Format("Parallel.For: t{0} in {1}", testData.Sum(), (DateTime.Now - time1).TotalMilliseconds)); } static void TestParallelForeach(List<int> testData) { //记录结果用 DateTime time1 = DateTime.Now; ConcurrentStack<int> resultData = new ConcurrentStack<int>(); Parallel.ForEach(testData, (item, loopState) => { item.ToString(); }); Console.WriteLine(string.Format("Parallel.ForEach:t{0} in {1}", testData.Sum(), (DateTime.Now - time1).TotalMilliseconds)); } }}
0 0
- C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
- C#并行运算 Parallel.Invoke、Parallel.For、Parallel.Foreach性能测试及示例
- C# Parallel.For和Parallel.ForEach学习
- Parallel.For & Parallel.ForEach & Parallel.Invoke
- Task Parallel.For、Parallel.ForEach、Parallel.Invoke
- C# 并行循环Parallel.For
- Parallel.ForEach() 并行循环
- Parallel.ForEach() 并行循环
- c# Parallel并行运算
- C#并行编程-Parallel
- C# Parallel并行
- C#并行编程-Parallel
- 并行计算—parallel,for联合使用
- Parallel.ForEach
- Parallel
- VS2010&.Net 4.0 之并行运算(Parallel)(For、Foreach)
- C# Parallel 并行计算测试
- C#多线程 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach
- 营改增后不能抵扣的15种专用发票情形
- C++灵魂所在之---多态的前世与今生
- mac go sublime 3
- 图片宽度为控件宽度,高度按比例缩放
- 生成螺旋线形状的随机点
- C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
- 约束总结
- C++之虚函数
- 【Get深一度】高斯白噪声之——散粒噪声(shot noise )
- gulp教程之gulp中文API
- 第十六周阅读程序-7
- SAP中采购订单状态与MRP的关系
- PRO-2 Day1
- 政治哲学与幸福根基 (David Miller )