什么是CPU密集型、IO密集型?「建议收藏」
CPU密集型(CPU-bound)
CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。
在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时间用在三角函数和开根号的计算,便是属于CPU bound的程序。
CPU bound的程序一般而言CPU占用率相当高。这可能是因为任务本身不太需要访问I/O设备,也可能是因为程序是多线程实现因此屏蔽掉了等待I/O的时间。
IO密集型(I/O bound)
IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等I/O (硬盘/内存) 的读/写操作,此时CPU Loading并不高。
I/O bound的程序一般在达到性能极限时,CPU占用率仍然较低。这可能是因为任务本身需要大量I/O操作,而pipeline做得不是很好,没有充分利用处理器能力。
CPU密集型 vs IO密集型
我们可以把任务分为计算密集型和IO密集型。
计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。
计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。
第二种任务的类型是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。
IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。
总之,计算密集型程序适合C语言多线程,I/O密集型适合脚本语言开发的多线程。
推荐阅读
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194348.html原文链接:https://javaforall.cn
相关文章
- 您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2[通俗易懂]
- Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD
- Cpu指令重排_cpu的指令集
- 40 行 Python 代码,写一个 CPU!
- [译]PostgreSQL16-新特性-新增IO统计视图:pg_stat_io
- 减少超十万 CPU 内核,省下数千台主机,Uber 弄了个自动化 CPU 垂直扩展年省数百万美元
- python计算windows的cpu使用率详解编程语言
- Linux查看CPU使用率:一个实用的技巧。(linux看cpu使用率)
- Linux系统磁盘IO性能研究(linux磁盘io性能)
- cpu探查Linux内核:查看CPU使用情况(linuxcore查看)
- Linux CPU高负载:解决思路分析(linuxcpu很高)
- 高解决Linux CPU占用率过高问题(linux占用cpu)
- 开发利用Linux开发提升CPU效能的方法(linuxcpu)
- 优化MySQL多核CPU优化:提高性能的关键(mysql多核cpu)
- 如何解决MySQL CPU使用率过高问题?(mysqlcpu使用率高)
- Linux下查看CPU信息的命令(linux查看cpu命令)
- CPU连接MySQL的正确姿势(cpu如何连接mysql)
- 占用解决Redis高CPU占用问题(redis 高cpu)
- 的限制Oracle中CPU个数的受限定义(oracle中cpu个数)
- Oracle数据库系统与CPU的协作(oracle 与 cpu)
- Oracle数据库CPU负载大如何降低耗费(oracle cpu耗费)
- [Oracle]CPU/PSU补丁安装详细教程