并行的执行效率一定高于串行吗?(多线程的执行…
2019-10-29 16:02:43来源:博客园 阅读 ()
并行的执行效率一定高于串行吗?(多线程的执行效率一定高于单线程吗?)
一、什么是串行?什么是并行?
串行:任务进行排队,一个一个执行;
并行:多个任务齐头并进。
二、单核、多核这两种情况下的并行。
单核情况下的并行:并非真的是多个任务同时进行的,是需要在这任务之间来回切换(即上下文切换)的。
多核情况下的并行:是几核,就能真正做到几核同时执行各自的任务。
三、任务的两大类型。
“计算密集型”任务:
特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。
这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。
“IO密集型”任务:
涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO(指把内容从硬盘上读到内存的过程,或者是从网络上接收信息到本机内存的过程)的速度远远低于CPU和内存的速度)。
对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。
四、看完了上面几点,我们就可以对“并行的执行效率一定会高于串行吗”这个问题作出解答了。
答:并不一定,取决于机器的核数和任务类型。
1.如果是执行多个计算密集型任务:
①单核:串行 > 并行。
②多核:并行 > 串行。
2.如果是执行多个IO密集型任务:
①单核:并行 > 串行。
②多核:并行 > 串行。
在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。
在单CPU或单核的计算机上,使用多线程技术,也可以把进程中负责I/O处理、人机交互而常被阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。
原文链接:https://www.cnblogs.com/laipimei/p/11757209.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 用 Git 和 Github 提高效率的 10 个技巧! 2020-06-10
- 如何在Spring Boot应用启动之后立刻执行一段逻辑?本文详解 2020-06-05
- 如何在Spring Boot应用启动之后立刻执行一段逻辑 2020-06-02
- 流行的JAVA IDE,你都用过哪几款? 2020-05-30
- Spark SQL源码解析(五)SparkPlan准备和执行阶段 2020-05-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash