什么是CPU密集型、IO密集型?「建议收藏」

什么是CPU密集型、IO密集型?「建议收藏」CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPULoading100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPULoading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPUbound。例如一个计……

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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密集型适合脚本语言开发的多线程。

推荐阅读

Spring Boot 最新教程,太全了!

1,000+ 道 Java面试题及答案整理(最新版)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194348.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 21计算机保研经验分享

    21计算机保研经验分享保研最终去向:哈工大威海-计算机个人情况:学校是211计算机弱校,rank7%;个人有数学建模,小程序,网安的省级奖,几个小科研项目,一段工作室经历,擅长后端搬砖。无论文;自我感觉算是保研er水平一般的,我这个去向怎么样啊,欢迎留言面经:吉林大学软件工程+哈工大威海计算机面试经验分享马上写好一、夏令营夏令营经历:北理工网安入营+时间冲突放弃,只能说非常可惜;吉林大学软件入营+优秀营员;哈工大威海计算机入营+面试合格(共投递11所学校学院,只有两个真正参加,但万幸都有收获)吉林大学软件工程

    2022年5月9日
    59
  • 一文轻松掌握python语言命名规则(规范)

    一文轻松掌握python语言命名规则(规范)和C/C++、Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而提高编写代码的效率。我们在平常编写程序的时候需要注意以下几点:一、python变量名命名的硬性规则1.1.变量名大小写敏感python变量名区分大小写,也就是Student和student在…

    2022年5月24日
    36
  • vscode php 代码提示 自动完成

    vscode php 代码提示 自动完成原来一直用phpstorm感觉挺强大的,但phpstorm是收费的,很麻烦。现在用vscode,发现代码提示功能比phpstorm还要强大,还要好用。php相关插件:PHPIntelephense:代码提示插件TabNine:AI代码提示,非常强大,它支持23种编程语言、5种编辑器PHPNamespaceResolver:PHP命名空间解析器;可以导入和扩展类;PHPDocBlocker:注释自动生成器,/**回车?优秀,必装。…

    2022年9月1日
    19
  • Linux(centos7)离线安装Kubernetes1.19.2和docker——images导入导出

    Linux(centos7)离线安装Kubernetes1.19.2和docker——images导入导出

    2021年5月15日
    249
  • Task 生成排队人数任务线程

    Task 生成排队人数任务线程Task 生成排队人数任务线程

    2022年4月24日
    51
  • Python爬虫:逆向分析某酷音乐请求参数

    Python爬虫:逆向分析某酷音乐请求参数本篇博客通过对酷狗音乐的请求参数进行逆向分析,进而加深对逆向分析流程的理解。

    2022年6月19日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号