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

CPU密集型和I/O密集型相关推荐

  1. 怎么理解CPU密集型和I/O密集型

    [摘要] CPU密集型与I/O密集型是在计算机上执行任务的两种策略,在并发执行任务场景下,我们需要选择使用多线程或多进程. 说在前面,CPU密集型与I/O密集型是在计算机上执行任务的两种策略,在并发执 ...

  2. 谈计算(cpu)密集型和io密集型与php性能优化

    这篇文章计划很久了一直感觉无从下手, 一直想全面.深入的写一篇关于php优化,但思绪很乱,经过很多天的构思和整理,终于有点头绪了. 几十年来,php以超高的开发效率.低成本的投入.内置丰富的函数库.灵 ...

  3. io密集服务器cpu性能,线程池中CPU密集型和IO密集型选择

    cpu密集型:cpu使用率较高(也就是一些复杂运算,逻辑处理),所以线程数一般只需要cpu核数的线程就可以了.这一类型的在开发中多出现的一些业务复杂计算和逻辑处理过程中. IO密集型:cpu使用率较低 ...

  4. 线程池使用:CPU密集型和IO密集型

    #1 cpu密集型: cpu使用率较高(也就是一些复杂运算,逻辑处理),所以线程数一般只需要cpu核数的线程就可以了. 这一类型的在开发中多出现的一些业务复杂计算和逻辑处理过程中. #1 I/O密集型 ...

  5. IO密集型和CPU密集型程序-概念与实现

    欢迎关注笔者的微信公众号 概念 在计算机科学中,有两种不同类型的程序:IO 密集型和 CPU 密集型.这两种程序的主要差别在于它们在执行任务时瓶颈所在的地方. IO 密集型:这类程序主要通过读写磁盘文 ...

  6. java中io密集和cpu密集_CPU密集与IO密集型区别

    CPU 密集型(I/O bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘 ...

  7. io密集型和cpu密集型_一次说明白Python爬虫中多线程,多进程,异步IO编程

    图/文:迷神 我们在Python爬虫中,重要的是讲究速度,如果有10万或者100万Url地址,写过爬虫的都会知道,那估计是非常慢的.我们的Python爬虫一般IO密集型业务,Python爬虫程序需要发 ...

  8. io密集型和cpu密集型java,如何设计CPU密集型与I/O密集型程序

    CPU密集型(CPU-Bound)是指系统指花费相对大部分时间在做CPU运算.逻辑判断等,CPU使用率很高,典型的如加密运算:I/O密集型(I/O-Bound)是指系统花费大部分时间在等待相对较慢的I ...

  9. io密集型和cpu密集型_和小胖一起理解CPU负载和利用率

    作者:小胖前言 凌晨一点,正整着炸鸡的小胖,微信一呼"你的服务器CPU持续超载 - " 麻溜的连上服务器,先把CPU负载摁下来.仔细一想,最近1分钟平均负载很大,但CPU利用率却≤ ...

  10. IO密集型和CPU密集型

    系统有四大资源:CPU.内存.磁盘.网络 CPU密集型: 介绍:说明系统的瓶颈在CPU上面(比如做大量的运算.矩阵运算.计算圆周率.渲染等),此时性能瓶颈就在CPU上面,无论你磁盘读写多块,性能也上不 ...

最新文章

  1. php array的实现原理,PHP数组遍历与实现原理
  2. Java程序员必备:序列化全方位解析
  3. linux i217 v网卡驱动,手动安装Intel network I217-LM网卡的Linux驱动
  4. SpringMVC+Spring+mybatis项目搭建详细过程
  5. Codeforces 739B Alyona and a tree (树上路径倍增及差分)
  6. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式
  7. 计算机程序员能做多久,这个行业有年龄限制吗?
  8. 删除不需要的(辅助)SQL Server事务日志文件
  9. win98访问win7方法
  10. 利用Mcafee管理工具绕过McAfee杀毒软件
  11. 缺少计算机所需的介质驱动程序6,缺少计算机所需的介质驱动程序解决办法
  12. python可视化分析网易云音乐评论_网易云音乐评论 可视化分析
  13. dubbo的工作原理
  14. 【idea】智能花盆
  15. 【前端全家桶】 HTTP协议类
  16. 计算机基础教程4 - 组件
  17. 求职应聘面试常见问题回答技巧
  18. 遥感影像的几何校正介绍
  19. R语言ggplot2可视化:patchwork包将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图、两个可视化的组合结果对齐、并为组合图像的每个子图添加标题
  20. 《Python编程:从入门到实践》课后习题-第5章

热门文章

  1. Add library ‘Maven: ..to classpath
  2. 并发容器ConcurrentHashMap——JDK1.7与JDK1.8区别
  3. suse使用ISO文件制作zypper源
  4. error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
  5. MySQL双主高可用架构之MMM实战
  6. DataGridView列自适应宽度
  7. [JavaScript] 怎么使用JS禁止复制粘贴
  8. TP5常用命令符操作
  9. PHP 可变变量的使用
  10. go map二维数据追加