CPU密集型和I/O密集型区别

Posted 张啊咩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU密集型和I/O密集型区别相关的知识,希望对你有一定的参考价值。

CPU密集型

一些进程绝大多数时间在计算上,称为计算密集型(CPU密集型)computer-bound。一些大量循环的代码(例如:图片处理、视频编码、人工智能等)就是CPU密集型。

I/O密集型

有一些进程则在input 和output上花费了大多时间,称为I/O密集型,I/O-bound。比如搜索引擎蜘蛛大多时间是在等待相应这种就属于I/O密集型。

 

Nodejs

众所周知node.js是单线程的,正常来说nodejs处理CPU密集型就比较乏力,毕竟只有一条线程。

node从他推出至今,充满赞美和饱受诟病的都是其单线程模型,所有的任务都在一个线程中完成(I/O等例外),优势的地方自然是免去了频繁切换线程的开销,以及减少资源互抢的问题等等,但是当nodejs面对cpu密集型模型的时候就力不从心了。尽管node拥有异步机制,可以把一些耗时算法丢入eventloop等待下个事件循环再做,但是因为其任然是单线程模型,所以终究会造成阻塞。

 

以上是关于CPU密集型和I/O密集型区别的主要内容,如果未能解决你的问题,请参考以下文章

线程池大小选择:针对 I/O 密集型场景和 CPU 密集型场景

I/O密集型和CPU密集型

CPU-bound(计算密集型) 和I/O bound(I/O密集型)/数据密集型

如何理解CPU密集型 和 I/O密集型

如何理解CPU密集型 和 I/O密集型

如何理解CPU密集型 和 I/O密集型