`

计算密集型 vs IO密集型

    博客分类:
  • java
阅读更多
是否采用多任务的第二个考虑是任务的类型。我们可以把任务分为计算密集型和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语言最差。
分享到:
评论

相关推荐

    云计算环境下基于优先级的IO和网络密集型应用调度策略.pdf

    所谓IO密集型应用,是指那些对磁盘读写操作依赖较大的程序,如数据库管理、文件服务器、数据仓库等。网络密集型应用则指的是那些对网络带宽和响应时间敏感的应用,如在线游戏服务器、大规模分布式系统等。这两种类型...

    Vsio模具,HP设备

    这种设计大大节省了空间,减少了布线,并降低了能源消耗,适合需要大量桌面计算能力的环境,如呼叫中心或图形密集型工作站点。 HP Blade PC利用HP的刀片基础设施,其中包含HP Racks,这是一种专门设计用于容纳刀片...

    Python 多进程、多线程效率对比

    Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程。本篇来作个比较。 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 GIL 这把大锁的存在...

    RapidIO 4.0协议标准

    它支持多种数据传输方式,并能够提供高带宽和低延迟的特性,非常适合于通信、存储和计算密集型应用。 #### 三、RapidIO 4.0协议特点 - **高带宽**:RapidIO 4.0协议提供了更高的数据传输速率,支持高达100 Gbps的...

    RapidIO标准

    **RapidIO**是一种高性能、低延迟的互连技术标准,主要用于嵌入式系统、通信系统以及计算密集型应用领域,如数字信号处理(DSP)设备、高级电信计算架构(ATCA)板卡等。RapidIO规范由RapidIO贸易协会制定并维护,该...

    Iowait 的成因、对系统影响及对策

    2. **负载均衡**:如果多台服务器可用,可以将IO密集型任务分散到不同的服务器上。 3. **缓存策略**:利用内存缓存减少磁盘访问次数。 4. **IO调度算法**:调整内核的IO调度器,选择更适合当前工作负载的调度算法。 ...

    计算机二级考试Python知识点详述

    还介绍了多线程和多进程编程的技术以及相关的设计考虑因素,并探讨了计算密集型与IO密集型任务之间的区别。最后讲解了常用的集合操作方法以及多种排序算法,包括冒泡排序、选择排序、插入排序、归并排序等。 适合...

    Fusion-io 快速安装指南

    **Fusion-io 快速安装指南综合解析** Fusion-io 的 ioDrive 和 ioDriveDuo 是高性能存储解决方案,为数据中心和高...通过遵循官方指南,用户可以顺利完成 ioDrive 的安装和配置,充分发挥其在数据密集型应用中的优势。

    线程池线程数设置.doc

    - 其中 Ncpu 为 CPU 的核心数,加 1 的目的是为了防止在计算密集型任务中出现短暂的空闲状态,确保在某个线程因为外部因素暂时停止工作时,另一个线程能够立即接手继续执行。 - **IO 密集型任务**:Nthreads = 2 *...

    Python高级编程和异步IO并发编程

    线程在同一进程内共享内存,适合执行I/O密集型任务,而进程拥有独立的内存空间,更适合CPU密集型任务。了解如何使用threading和multiprocessing模块,以及GIL(全局解释器锁)对Python多线程的影响,能帮助你更好地...

    python网络编程DAY03.txt

    前情回顾 ...计算密集型程序(cpu密集型程序):在程序执行中cpu运算较多,IO操作相对较少。消耗cpu大,运行速度快 IO分类 阻塞IO 非阻塞IO IO多路复用 阻塞IO 阻塞IO是IO的默认形态,是效率较低的

    大型数据场景中定时任务系统研究.docx

    总结来说,大型数据场景中的定时任务系统优化主要包括:利用多线程并发处理,针对计算密集型和IO密集型任务采取不同的线程管理策略;采用增量更新策略处理数据变化;合理安排任务执行时间和周期以实现负载均衡;以及...

    02进程、线程与协程.zip

    "IO密集型与计算密集型"是衡量任务特性的两个重要维度。I/O密集型任务涉及到大量的数据读写,如网络请求、磁盘读写等,其主要瓶颈在于等待I/O操作完成,而非CPU计算。计算密集型任务则需要大量的CPU运算,例如图像...

    一种基于FPGA的Serial RapidIO交换设计.pdf

    RapidIO是一种高性能串行互连技术,它最初由美国Mercury Computer Systems公司为计算密集型信号处理系统所开发,并且后来被包括Motorola在内的多家半导体公司所采纳。RapidIO技术专为点对点操作和任意拓扑结构设计,...

    linux异步IO.pdf

    Linux异步I/O为开发者提供了一种强大且灵活的方式来优化I/O密集型应用程序的性能。通过理解不同I/O模型的特点和局限,开发者可以更明智地选择适合自身需求的技术方案,从而在现代计算环境中构建出更加高效、响应迅速...

    RapidIO 嵌入式系统互连总线概述

    RapidIO技术起源于美国Mercury Computer Systems公司的内部研发项目,旨在解决计算密集型信号处理系统的内部通信问题。随着技术的发展和市场需求的增长,RapidIO逐渐被其他公司如Motorola采纳,并最终成为了一个开放...

    python使用多进程的实例详解

    python多线程适合IO密集型场景,而在CPU密集型场景,并不能充分利用多核CPU,而协程本质基于线程,同样不能充分发挥多核的优势。 针对计算密集型场景需要使用多进程,python的multiprocessing与threading模块非常...

    Implementation Proposal for rapidio support

    RapidIO是一种高性能、低延迟的片上系统(SoC)和板载连接技术,旨在优化数据密集型应用中的通信效率。它被设计为一种内部系统互连,主要用于本地I/O总线场景,如在单个电路板上实现设备间的高速通信。 #### 1.1 系统...

Global site tag (gtag.js) - Google Analytics