并行是.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 = 0; i < 1000; 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的时候,会影响这个程序与数据库建立通讯的次数,当然同时建立通讯次数越多,性能越好,当然这也要看数据库服务器的能力了,呵呵。

事实上,如果我们的程序是单线程串行执行的,上面这个图只要显示一个活动的连接,性能与同时10几个连接,那肯定是没法比的,这个很容易理解,就像先10万的人过桥一下,大桥和独木桥来说,10万人通过的话,时间一定是不一样的,呵呵。

上面是并行处理1000次连接的时间,3427毫秒,而对于单线程串行来说,我们看一下它的处理时间

代码

       [TestMethod]public void SignalRead(){Stopwatch sw = new Stopwatch();sw.Start();for (int i = 0; i < 1000; 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);}

与数据库建立单个连接

程序运行的时间

通过上面的截图我们可以看到,串行比并行慢了足足1000多毫秒,这个数值会随着并发量的提升而升高。

所以,在多核时代,在操作系统处理位数高的时代,我们应该尽量多用并行!

感谢各位的阅读!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定),如需转载请自行联系原博主。

大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)相关推荐

  1. Hologres揭秘:优化COPY,批量导入性能提升5倍+

    简介:揭秘Hologres优化COPY的技术原理,实现批量导入性能提升5倍+ Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的场景,全面兼容 ...

  2. SQLite性能提升10倍的Web数据库

    作者 | James Long 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 最近我开发了一款名为absurd-sql的SQLite后端.在这款工具的帮助下,你无需将整个数据库加载到内 ...

  3. 华为云数据库内核专家为您揭秘MySQL Volcano模型迭代器性能提升千倍的秘密

    林舒,20年以上数据库内核研发经验.原IBMDB2数据库内核专家,专长数据库内核性能优化.SQL查询优化.MPP分布式数据仓库技术等.现就职于华为加拿大研究所,全程参与了RDS for MySQL以及 ...

  4. t420i升级固态硬盘提升_系统迁移教程:升级SSD后笔记本性能提升两倍?浦科特M9P PLUS 1TB_固态硬盘...

    2020-11-11 19:58:23117点赞289收藏53评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合 ...

  5. Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

    来源 | 阿里巴巴云原生公众号 3 月 20 日,Nacos 2.0 正式发布.Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台,也可以理解为 ...

  6. 重磅官宣:Nacos2.0性能提升10倍

    简介:​Nacos2.0 作为一个跨代版本,彻底解决了 Nacos1.X 的性能问题,将性能提升了 10 倍. 作者:席翁 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构 ...

  7. nginx php7提速,nginx+php7-fpm 性能提升几倍跟踪实践结果并优化

    nginx+php7-fpm 性能提升几倍跟踪实践结果并优化 nginx+php7-fpm 性能提升几倍,跟踪实践结果并优化 历史ubuntu服务器使用的apache+php5,现在使用nginux+ ...

  8. 重磅官宣:Nacos2.0发布,性能提升10倍

    简介: ​Nacos2.0 作为一个跨代版本,彻底解决了 Nacos1.X 的性能问题,将性能提升了 10 倍. 作者:席翁 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并 ...

  9. 本周AI热点回顾:百度推出全球首个mRNA疫苗不稳定性解决方案、性能提升20倍:英伟达GPU旗舰A100

    01 百度推出全球首个mRNA疫苗不稳定性解决方案LinearDesign 新冠疫情爆发后,RNA设计领域世界知名专家.斯坦福大学生物化学系Rhiju Das教授关注到疫苗研发存在的一个非常棘手的问题 ...

最新文章

  1. vim 撤销上一步操作_Linux笔记(4):vim入门
  2. 北工大计算机学院教授,北工大计算机学院计算机科学与技术导师介绍:周艺华...
  3. 不清楚 spring 的这几个知识点,面试直接挂了!
  4. SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header
  5. 研发协同平台持续交付2.0架构演进
  6. P3338-[ZJOI2014]力【FFT】
  7. 2_RabbitMQ工作模式_Work queues_Publish/Subscribe_Routing_Topics_HeaderRpc
  8. 使用Qt生成第一个窗口程序
  9. 加入鹅厂,就趁现在!
  10. js scroll事件
  11. 为何python不好找工作-郑州为何python不好找工作?
  12. php显示地址栏携带的错误信息_php-fpm搭建及加固
  13. springAOP 之 前置输出
  14. studio one 3 机架声道设置_雅马哈UR242声卡宿主机架直播跳线设置
  15. pandas DataFrame 分组求和
  16. 利用Bootstrap框架制作WordPress自适应主题
  17. COPU副主席刘澎:中国开源在局部领域已接近或达到世界先进水平
  18. tipask mysql调取dedecms_帝国CMS如何在首页调用tipask最新问题-DEDE
  19. 程序员转行后都怎么样了,分享我身边的真实经历!
  20. Unity3D Android接入FCM推送

热门文章

  1. [Java基础] Java如何实现条件编译
  2. C#综合揭秘——Entity Framework 并发处理详解
  3. 理解linux tr命令
  4. 我的C#学习笔记(1)
  5. iOS 发布APP关于IDFA的相关内容
  6. 国贫县山西永和:“一揽子”保险“保”脱贫
  7. android 每个块半径不同的扇形图,自定义view
  8. MySQL中char与varchar的区别
  9. Android自定义控件系列之基础篇
  10. python学习--服务期间通讯和mysql数据库操作