zoukankan      html  css  js  c++  java
  • 题外话:计算密集型 vs IO密集型

    我们把任务分为计算密集型和IO密集型,erlang作为IO密集型的语言,适合网关等相关的场景,而对计算达到某一量级后,可能处理效率下降的很明显。

    erlang不适合数值计算。erlang是解释型的,虽然现在的解释器能够编译代码,但是还是太慢。

    计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

    计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。erlang不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。

    IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。

    IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

  • 相关阅读:
    [转] JS报 “尚未实现” 错误
    分享到国内各SNS网站的代码
    IE8以下版本不支持动态创建的HTML5元素?
    一个较为个性化的出生日期选择
    关于拖拽上传 [一个拖拽上传修改头像的流程]
    用CSS写出漂亮的小三角
    用户自定义模块的实现方案
    纪录一则IE的bug
    onpropertychange 和 oninput
    判断脚本加载完毕
  • 原文地址:https://www.cnblogs.com/unqiang/p/9516590.html
Copyright © 2011-2022 走看看