cpu模拟器c语⾔实现_IO密集型和CPU密集型区别
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)
python在线模拟器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密集型适合脚本语⾔开发的多线程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。