CPU密集型和IO密集型对 CPU内核之间的关系

CPU密集型

CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU 负载很高。

例如:计算1+2+3+…+ 1亿、计算圆周率后几十位、数据分析,对视频进行高清解码等都是属于CPU密集型程序。

这类程序在运行的过程中,需要大量的运算,而没有阻塞,CPU一直全速运行,CPU的占用率一般都很高

单核CPU处理CPU密集型程序不建议使用多线程,因为单核CPU在同一时间只能运行一个线程,线程之间还有切换的时间消耗,无论开几个模拟的多线程,该任务都不可能得到加速,因为CPU总的运算能力就只有这么多。而多核每个线程都有CPU去运行,不会发生等待CPU时间片的情况,也没有切换的额外消耗。

IO密集型

IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,但CPU的占用率不高,可能是因为任务本身需要大量I/O操作,而程序的逻辑做得不是很好,没有充分利用处理器能力。此时,系统运作,大部分的状况是CPU在等I/O (硬盘/内存) 的读/写操作,导致线程空余时间很多,通常就需要开CPU核心数数倍的线程。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。

所以用脚本语言像python去做I/O密集型操作,效率就很快。

区别和使用

  • IO密集型:大量网络,文件操作。
  • CPU 密集型:大量计算,cpu 占用越接近 100%, 耗费多个核或多台机器。
  • 当线程等待时间所占比例越高,需要越多线程,启用其他线程继续使用CPU,以此提高CPU的利用率;
  • 当线程CPU时间所占比例越高,需要越少的线程,通常线程数和CPU核数一致即可,这一类型在开发中主要出现在一些计算业务频繁的逻辑中。

 参考文章:

CPU密集型与IO密集型的区别

如何确定线程池大小

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值