计算密集型任务和IO密集型任务的简单理解

前言

今天在看文件索引和数据库索引的相关知识点的文章,文中比较了二叉查找树和B树在查找中的区别,其中提到了IO密集型任务的概念,想起以前学习计算机组成原理的时候也遇到计算密集型和IO密集型的相关概念,记录下这俩概念。

IO密集型任务

计算机的组成按照冯诺依曼体系的话分为五个部分:运算器、控制器、存储器、输入、输出设备。计算机运行的过程包括指令的执行,数据的存储、传输和处理等过程。
一个任务的执行包括一系列的程序命令,对计算机而言,核心部件CPU负责执行命令和处理数据,存储设备和数据输入输出设备进行数据的传输。
在程序运行过程中,时间的消耗包括CPU的运行时间,和数据的传输时间。就拿文件索引来举例,CPU负责的逻辑运算可能就是数据的比较,但是存储设备就得需要消耗时间进行磁盘的遍历,和数据的回写,相对来说频繁的比较操作CPU并没有消耗大量时间,如果单纯等待存储的读写,那么CPU的利用效率就很低。不仅是文件索引任务使用到的磁盘IO,包括互联网时代的网络设别需要使用到的网络IO,其在数据的传输时间远远大于逻辑计算时间,这一类一般看作是IO密集型任务,我理解IO密集型任务是花在IO上的时间远远大于相对于CPU运行速度,从而导致CPU的利用效率变低。
解决的办法:使用多线程技术,提高CPU的使用效率。

计算密集型任务

写完上面,对于计算密集型任务理解起来可能更好一点,计算密集型任务的执行需要CPU频繁的进行计算和逻辑处理等步骤,之前看到的文章中举例计算圆周率到小数点一千位之后说的就是这种情况。还有视频处理和渲染都需要强大的算力。此时不希望CPU频繁的切换线程任务增加时间消耗,需要尽量减少线程数量,说明有时候多线程并不是万金油,还是要看使用场景的。

最后

熟悉好概念之后,知道了特定业务场景需要特定分析。通过分析业务场景,会帮助设计更适合当前业务的解决方案。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值