Parallel小记
List<Temp> tList = new List<Temp>();
for (int i = ; i < ; i++)
{
tList.Add(new Temp()
{
id = i,
name = string.Concat("test", i),
age = i *
});
}
object obj = new object();
List<TempChild> resultList = new List<TempChild>();
Stopwatch sc = new Stopwatch();
Stopwatch sc1 = new Stopwatch();
Stopwatch sc2 = new Stopwatch();
sc.Start();
Parallel.ForEach(tList, item =>
{
List<TempChild> tempChildList = LoadChildList();
if (null != tempChildList && tempChildList.Count > )
{
lock (obj)//一定要加锁,不然会出异常【目标数组长度不够,请检查destIndex和长度以及数组下限】
{
resultList.AddRange(tempChildList);
}
}
});
sc.Stop();
long second = sc.ElapsedMilliseconds;
List<TempChild> resultList1 = new List<TempChild>();
sc1.Start();
foreach (var item in tList)
{
List<TempChild> tempChildList = LoadChildList();
if (null != tempChildList && tempChildList.Count > )
{
resultList1.AddRange(tempChildList);
}
}
sc1.Stop();
long second2 = sc1.ElapsedMilliseconds; sc2.Start();
List<TempChild> resultList2 = tList
.AsParallel()
.SelectMany(
(item) =>
{
return LoadChildList();
}).ToList();
sc2.Stop();
long second3 = sc2.ElapsedMilliseconds;
private static List<TempChild> LoadChildList()
{
List<TempChild> tList = new List<TempChild>();
for (int i = 1; i < 100; i++)
{
tList.Add(new TempChild()
{
id = i,
name = string.Concat("test", i),
age = i * 2,
addr = i.ToString()
});
}
return tList;
}
分别对不同数据量级的并行任务执行对比,三种方式结果如下:
百万数量级,电脑崩了,没有测试结果~@@!!
由此,一般的list没必要并行执行,foreach足以。
Parallel小记的更多相关文章
- .Net多线程编程—System.Threading.Tasks.Parallel
System.Threading.Tasks.Parallel类提供了Parallel.Invoke,Parallel.For,Parallel.ForEach这三个静态方法. 1 Parallel. ...
- [原]Paste.deploy 与 WSGI, keystone 小记
Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...
- Java 8函数编程轻松入门(五)并行化(parallel)
1.并发与并行的区别 并发: 一个时间段内有几个程序都处于已启动到运行完毕之间,且这几个程序都是在同一个处理机上运行.但在任一个时刻点只有一个程序在处理机上运行 并行: 在同一个时刻,多核处理多个任务 ...
- Parallel并行之乱用
关于Parallel我也不细说了,一则微软封装的很好用,二来介绍这个的遍地都是. 我要说的是,要想成为一个优秀的标题党,一定要把重点放到别的地方,为了节省大家阅读时间,我先把结论说了,然后再慢慢从头说 ...
- 代码的坏味道(12)——平行继承体系(Parallel Inheritance Hierarchies)
坏味道--平行继承体系(Parallel Inheritance Hierarchies) 平行继承体系(Parallel Inheritance Hierarchies) 其实是 霰弹式修改(Sho ...
- 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
Task - 基于线程池的任务(在 System.Threading.Tasks 命名空间下) 多 Task 的并行执行 Parallel - 并行计算(在 System.Threading.Task ...
- Parallel.Foreach
随着多核时代的到来,并行开发越来越展示出它的强大威力! 使用并行程序,充分的利用系统资源,提高程序的性能.在.net 4.0中,微软给我们提供了一个新的命名空间:System.Threading.Ta ...
- MySql 小记
MySql 简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...
- 在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决过程
发现问题 需求很简单,大致就是要批量往数据库写数据,于是打算用Parallel并行的方式写入,希望能利用计算机多核特性加快程序执行速度.想的很美好,于是快速撸了类似下面的一串代码: using (va ...
随机推荐
- Django+ openpyxl 导出文件,设置表头/内容格式
之前使用xlrd.xlrt处理文件的导入导出,这两个主要用于excel2003格式的文件的读写,并且xlrt最多可以写入256行,大于256行会报错 找了新插件openpyxl,对它找到针对某一行设置 ...
- 计蒜客 31458.Features Track-滚动数组+STL(map)连续计数 (ACM-ICPC 2018 徐州赛区网络预赛 F)
F. Features Track Morgana is learning computer vision, and he likes cats, too. One day he wants to f ...
- 求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
求给出第 K (0 < K < 109) 个 N (0 < N < 44) 位二进制数,该二进制数不得有相邻的"1". 这道题要求给出第 K (0 < ...
- 最小生成树(Kruskal)(并查集)
最小生成树 时间限制: 1 Sec 内存限制: 64 MB提交: 11 解决: 2[提交][状态][讨论版] 题目描述 某个宇宙帝国有N个星球,由于宇宙的空间是三维的,因此每个星球的位置可以用三维 ...
- 第1天-html快速入门
开发工具:HBuilder 创建项目: 在电脑本地磁盘创建项目目录,如"D:\project" 打开HBuilder,这个工具默认会创建一个项目,我们删掉即可,然后新建项目:&qu ...
- 数字 function
SELECT TRUNC(15.79), TRUNC(), ROUND(15.79), ), ), FLOOR(26.983), CEIL(26.123), ), ), ), MOD(,) FROM ...
- Xamarin.Forms使用Slider注意问题
Xamarin.Forms使用Slider注意问题 Xamarin.Forms中,Slider用来构建滑块控件.其中,Minimum表示最小值,Maximum表示最大值.如果Minimum大等于1 ...
- 【最短路】【spfa】【最小割】【Dinic】bzoj1266 [AHOI2006]上学路线route
原问题等价于断掉一些边,让原来所有的最短路全都无法联通S和T. 先求最短路,然后把在最短路上的边(dis[u[i]]+w[i]==dis[v[i]])加入新图里,跑最小割.显然. 注意是无向图. #i ...
- [Gym101194G][CHINA-Final2016]Pandaria
题目大意: 给你一个$n(n\le10^5)$个点,$m(m\le2\times10^5)$条边的无向图,每个点有一个颜色$c_i$,每条边有一个边权$w_i$.$q(q\le2\times10^5) ...
- 踩的ssh坑
先说下事情的起因,手贱删掉了~/.ssh下的所有文件,包括authorized_keys,id_rsa,id_rsa.pub,以及known_hosts.其实,这四个文件本来就是没有的,id_rsa和 ...