
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
C#编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,而本文我们就通过案例分析来简单了解一下,C#编程基础知识分享。
CPU密集型(CPU-bound)
也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作CPU读写IO(硬盘/内存)时,IO可以在很短的时间内完成,而CPU还有许多运算要处理,因此,CPU负载很高。
CPU密集表示该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),通常,线程数只需要设置为CPU核心数的线程个数就可以了。而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速比,因为CPU总的运算能力就只有这么多。
IO密集型(I/Obound)
IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等IO(硬盘/内存)的读写操作,因此,CPU负载并不高。
IO密集型的程序一般在达到性能极限时,CPU占用率仍然较低。这可能是因为任务本身需要大量I/O操作,而程序的逻辑做得不是很好,没有充分利用处理器能力。通常就需要开CPU核心数数倍的线程。
CPU密集型vsIO密集型
CPU密集型任务的特点就是需要进行大量计算(例如:计算圆周率、对视频进行高清解码、矩阵运算等情况)。这一情况多出现在一些业务复杂的计算和逻辑处理过程中。比如说,现在的一些机器学习和深度学习的模型训练和推理任务,包含了大量的矩阵运算。
IO密集型任务一般涉及到网络、磁盘IO,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。
两个大类
使用PFX前需要检查是否真的有必要并行,经过对阿姆达尔定律的了解,我们可以看出,并非使用更多的处理器,性能就能随之水涨船高。如果顺序执行的代码段占了这个工作的三分之二,即使用无数核心,也无法获得哪怕0.5倍的性能提升。
在并行中有可以分为两大类
结构化并行
如果一个工作可以很容易被分解成多个任务,每个任务都能独立高效的执行,那么结构化并行无疑是非常合适的,例如图片处理,光线追踪,密码暴力破解等。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。