大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
并行是.net4.5主打的技术,同时被封装到了System.Threading.Tasks命名空间下,对外提供了静态类Parallel,我们可以直接使用它的静态方法,它可以并行一个委托数组,或者一个IEnumerable的迭代,而今天主要通过一个访问数据库的代码,来说说并发Parallel对整个程序的提升是那么大,我们主要从数据库连接数和程序运行时间上就可以很清晰的看到效果。
简单的测试代码
[TestMethod]
public void Read()
{
Stopwatch sw = new Stopwatch();
sw.Start();
var actions = new List<Action>(); for (int i = ; i < ; i++)
{
actions.Add(() =>
{
using (var db = new am20160316Entities())
{
var repository = new Lind.DDD.Repositories.EF.EFRepository<ad_contract>(db);
var list = repository.GetModel().ToList();
}
});
}
Parallel.Invoke(actions.ToArray());
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
上面代码为并行执行[可用的线程数据并行](并不是说1000个任务,就必须开1000个线程去干这事,由于.net自己也线程池的概念,所有它会根据系统使用情况去为我们这个进程分配,如果你的各方面请求需要.net分配更多的线程,那就才会现时有多个线程启动(如果是连接数据库,它和你数据连接串的MaxPoolSize和MinPoolSize都是关系的)。
程序与服务器之前的连接
程序与数据库进行通讯时,同时开了一些连接,我们可以通过netstat -nba | findstr 192.168.2.123指令来查看与指定服务器通讯的情况,当我们修改MinPooSize的时候,会影响这个程序与数据库建立通讯的次数,当然同时建立通讯次数越多,性能越好,当然这也要看数据库服务器的能力了,呵呵。
aaarticlea/png;base64,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" alt="" />
事实上,如果我们的程序是单线程串行执行的,上面这个图只要显示一个活动的连接,性能与同时10几个连接,那肯定是没法比的,这个很容易理解,就像先10万的人过桥一下,大桥和独木桥来说,10万人通过的话,时间一定是不一样的,呵呵。
aaarticlea/png;base64,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" alt="" />
上面是并行处理1000次连接的时间,3427毫秒,而对于单线程串行来说,我们看一下它的处理时间
代码
[TestMethod]
public void SignalRead()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = ; i < ; i++)
{ using (var db = new am20160316Entities())
{
var repository = new Lind.DDD.Repositories.EF.EFRepository<ad_contract>(db);
var list = repository.GetModel().ToList();
}
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
与数据库建立单个连接
aaarticlea/png;base64,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" alt="" />
程序运行的时间
aaarticlea/png;base64,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" alt="" />
通过上面的截图我们可以看到,串行比并行慢了足足1000多毫秒,这个数值会随着并发量的提升而升高。
所以,在多核时代,在操作系统处理位数高的时代,我们应该尽量多用并行!
感谢各位的阅读!
大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)的更多相关文章
- Web 应用性能提升 10 倍的 10 个建议
转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...
- 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!
点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...
- activiti并行和串行区别
多实例还有并行.串行区分.以下解释一下什么是并行与串行 并行代表同时进行,如把任务分给5个人来处理,这5个人同时会收到任务,并且可以同时处理,不受各自的影响. 串行代表工作或任务由一个人完成后,再由另 ...
- Promise的并行和串行
Promise 并行 这个功能Promise自身已经提供,不是本文的重点.主要是依赖Promise.all和Promise.race. Promise.all是所有的Promise执行完毕后(reje ...
- async/await 里的并行和串行
我们在使用 async/await 语法时,有时会这样用: function getName () { return new Promise((resolve, reject)=>{ setTi ...
- 7.JavaScript-Promise的并行和串行
Promise 并行 Promise.all是所有的Promise执行完毕后(reject|resolve)返回一个Promise对象. 最近在开发一个项目中,需要等接口拿到全部数据后刷新页面,取消l ...
- 动画处理<并行和串行>
并行动画 当多个动画定义同时指向某个组件,并使用动画控制器启动时,就产生了并行动画(Parallel Animation).例如我们可以让一个组件: 移动的同时改变大小 旋转的同时边界颜色闪烁 圆形图 ...
- 查询性能提升3倍!Apache Hudi 查询优化了解下?
从 Hudi 0.10.0版本开始,我们很高兴推出在数据库领域中称为 Z-Order 和 Hilbert 空间填充曲线的高级数据布局优化技术的支持. 1. 背景 Amazon EMR 团队最近发表了一 ...
- 云 MongoDB 优化让 LBS 服务性能提升十倍
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 随着国内服务共享化的热潮普及,共享单车,共享雨伞,共享充电宝等各种服务如雨后春笋,随之而来的LBS服务定位问题成为了后端服务的一个挑战.M ...
随机推荐
- 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库
上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...
- Web3DGame之路(三)分析babylonjs
BabylonJS的例子十分详实 http://doc.babylonjs.com/tutorials Babylonjs的学习比较顺畅,开始做一些深入分析 一.语言选择 首先是js还是ts的问题 ...
- Tomcat7基于Redis的Session共享实战一
本文主要介绍如何使用redis对tomcat7的session进行托管. 1.安装Redisredis安装比较简单,此处略过. 2.配置两个Tomcat在本机上配置两个Tomcat,分别为tomcat ...
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- 基本SQL语句
说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1 ...
- IIS7.5+WebConfig实现页面伪静态和301重定向
IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...
- Sql Server系列:聚合函数
1 SUM SUM是一个求和函数,返回指定列值的总和.SUM 只能用于数字列. 其中忽略 Null 值. 语法 SUM ( [ ALL | DISTINCT ] expression ) OVER ( ...
- WPF如何仿制QQ2013登录窗口的关闭效果
昨天,有位朋友问我,WPF能做出像QQ2013窗口在关闭时那个貌似透明过渡的动画吗?我就歪着脸跟他说:"只有你想不到的,没有WPF做不到的". 他又接着说:"我知道肯定会 ...
- 实战Hybird app:内存溢出与优化
pheongap项目:http://www.nduoa.com/apk/detail/646816 主要的问题: heap过大,内存低性能差的机子上引起奔溃,直接退出 关于web app的优化,不仅仅 ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...