Parallel.ForEach() 并行循环
来源:互联网 发布:淘宝怎么申请 编辑:程序博客网 时间:2024/05/16 08:40
微软的并行运算平台(Microsoft’s Parallel Computing Platform (PCP))提供了这样一个工具,让软件开发人员可以有效的使用多核提供的性能。
Parallel.ForEach()和Parallel.For()就是微软并发类的成员。
今天做了一个简单的测试,我的电脑是双核的,效果还是比较明显的。
一般的for和foreach循环用时都在10秒钟;并发for循环在0.5秒,并发foreach在0.1秒钟。
但是并发循环不能滥用,在简单的少次数循环下,并发循环可能会体现不出其优势。
下面是简单的测试代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace parallelForeach
{
class Program
{
static void Main(string[] args)
{
DateTime startTime;
TimeSpan resultTime;
List<entityA> source = new List<entityA>();
for (int i = 0; i < 100; i++)
{
source.Add(new entityA
{
name = "悟空" + i,
sex = i % 2 == 0 ? "男" : "女",
age = i
});
}
startTime = System.DateTime.Now;
loop1(source);
resultTime = System.DateTime.Now - startTime;
Console.WriteLine("一般for循环耗时:" + resultTime);
startTime = System.DateTime.Now;
loop2(source);
resultTime = System.DateTime.Now - startTime;
Console.WriteLine("一般foreach循环耗时:" + resultTime);
startTime = System.DateTime.Now;
loop3(source);
resultTime = System.DateTime.Now - startTime;
Console.WriteLine("并行for循环耗时:" + resultTime.Milliseconds);
startTime = System.DateTime.Now;
loop4(source);
resultTime = System.DateTime.Now - startTime;
Console.WriteLine("并行foreach循环耗时:" + resultTime.Milliseconds);
Console.ReadLine();
}
//普通的for循环
static void loop1(List<entityA> source)
{
int count = source.Count();
for (int i = 0; i < count; i++)
{
System.Threading.Thread.Sleep(100);
}
}
//普通的foreach循环
static void loop2(List<entityA> source)
{
foreach (entityA item in source)
{
System.Threading.Thread.Sleep(100);
}
}
//并行的for循环
static void loop3(List<entityA> source)
{
int count = source.Count();
Parallel.For(0, count, item =>
{
System.Threading.Thread.Sleep(100);
});
}
//并行的foreach循环
static void loop4(List<entityA> source)
{
Parallel.ForEach(source, item =>
{
System.Threading.Thread.Sleep(100);
});
}
}
//简单的实体
class entityA
{
public string name { set; get; }
public string sex { set; get; }
public int age { set; get; }
}
}
- Parallel.ForEach() 并行循环
- Parallel.ForEach() 并行循环
- C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
- C# 并行循环Parallel.For
- 用Parallel和foreach包玩转并行计算
- C#并行运算 Parallel.Invoke、Parallel.For、Parallel.Foreach性能测试及示例
- VS2010&.Net 4.0 之并行运算(Parallel)(For、Foreach)
- R语言并行计算的原理和案例(foreach,parallel)
- Parallel.ForEach
- 构建多线程应用程序2 Parallel 并行类:Parallel.ForEach()、Task异步操作类:Task.Factory.StartNew()、并行LINQ查询: AsParallel()
- Parallel.For & Parallel.ForEach & Parallel.Invoke
- Task Parallel.For、Parallel.ForEach、Parallel.Invoke
- Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试
- Parallel's foreach method
- Parallel Execution(并行执行)
- c# Parallel并行运算
- Oracle 并行(Parallel)
- ORACLE parallel并行参数设置
- 设置vim C/C++语法高亮显示和自动缩进
- 开源数据库SQLite学习手册之入门篇
- Linux 存储管理相关资料
- tcpdump 使用方法
- ORACLE的性能调优—水平位
- Parallel.ForEach() 并行循环
- Prism应用开发(二)——Prism应用程序初始化
- js实现table内 某列的内容进行即时筛选
- android log系统
- 谈谈开源厂商和苹果的竞争
- Android各种访问权限Permission详解
- 本技术blog停止更新。
- Java与编码问题串讲之三--乱码
- fgets()