位置: 编程技术 - 正文

Node.js 的异步 IO 性能探讨(nodejs 异步io底层原理)

编辑:rootadmin

推荐整理分享Node.js 的异步 IO 性能探讨(nodejs 异步io底层原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs异步编程及原理,nodejs异步处理执行顺序,nodejs异步读取数据库,nodejs 异步io底层原理,nodejs异步读取数据库,nodejs 异步io底层原理,nodejs异步原理,nodejs 异步io底层原理,内容如对您有帮助,希望把文章链接给更多的朋友!

Python 和 Ruby 也有这样的框架,但因为在实际使用中会不可避免地用到含有同步代码的库,因此没能成长起来,而在 Node.js 之前,JavaScript 的服务器端编程几乎是空白,所以 Node.js 才得以建立起了一个所有 IO 均为异步的代码库。

大部分 Web 应用的瓶颈都在 IO, 即读写磁盘,读写网络,读写数据库。使用怎样的策略等待这段时间,就成了改善性能的关键点。

Node.js 的异步 IO 性能探讨(nodejs 异步io底层原理)

PHP 的策略:多进程运行,直接原地等待 IO 完成。缺点:多个进程会消耗多份内存,进程间难以共享数据。C/C++ 通常的策略:多线程运行,程序自己维护锁的状态。缺点:开发成本高,容易出错,不易调试。Python(Tornado): 多个请求在单个进程中轮流执行,遇到 IO 时切换到另一个请求。缺点:对于单个请求而言,依然没有最高效地利用时间。何谓「最高效地利用时间」?比如现在有两个不相关的数据库查询,在 PHP 中通常会先执行一个,执行完成后再执行第二个(总时间是 a + b). 显然这不是最高效的,应该同时执行两个查询,时间是 max(a, b).

Python 和其他支持多线程的语言的问题就在于,在语言层面,程序员很难告诉虚拟机,应当将两个操作同时执行,即使有办法,也相当麻烦,大多数人懒得去用(也不值得去用)。而因为 Node.js 丧心病狂地强制所有 IO 异步执行,Node.js 的程序员也可以说是轻车熟路,配合一些改善代码可读性库(promise, async), 可以很轻松地让不相干的操作并行执行。

上面讲了异步 IO 的实现,那么异步 IO 的优势究竟体现在哪里呢。实际上异步 IO 并不能神奇地减轻服务器的压力,该加服务器还是一样要加服务器,只不过异步 IO 会减少单个请求的时间,去掉单个请求中那些无意义的等待时间。所以单位时间内处理的请求没有变化,但每个请求的处理时间却减少了。从这个角度,服务器也节约了一些资源——即维持每个请求的连接消耗的内存。

吐槽一下我所了解的Node.js 首先是性能,用起来感觉Node.js的性能并没有想象中那么好。内存占用差不多和Ruby一个等级,比Python,PHP要多。计算性能(即CPU使用)上,纯计算并没有太大

node.js中使用q.js实现api的promise化 关于啥是promise以及promise解决的是啥问题,敬请体验node的回调异步编码大法,顺带移步

nodejs命令行参数处理模块commander使用实例 诚然,之前处理都是使用内置的process.agrv,这个能work,但是不好使,于是tj大神给写了一个,mygod,完全的高大上:1、安装npminstallcommander2、option解析Options

标签: nodejs 异步io底层原理

本文链接地址:https://www.jiuchutong.com/biancheng/374284.html 转载请保留说明!

上一篇:2014年最火的Node.JS后端框架推荐(2014年最火的英文歌)

下一篇:吐槽一下我所了解的Node.js(我吐槽你)

  • 增值税为10%的有哪些
  • 取得的证券投资业绩
  • 房产税的计税依据是含税还是不含税
  • 分公司产生的费用怎么报销
  • 工程图纸设计费用收费标准
  • 分公司注销需要总公司法人实名确认吗
  • 出口赠送客户怎么处理
  • 用餐补贴算在工资里面吗
  • 个税三代手续费返还增值税报表怎么填
  • 进项税转出主要内容包括
  • 小企业会计准则以前年度损益调整
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 打官司赢了再付费叫什么
  • 退款给客户怎么记分录
  • 预付款怎么做账务处理
  • 单位之间借款利息可以开票么
  • 关于住宿费增值税专发票抵扣问题
  • 母公司给子公司担保
  • 外国常驻代表机构经费支出
  • 进项税额转出后再转入怎么做账
  • 建账实收资本怎么处理
  • 打开网页时显示无法获取属性
  • ajax获取php数据
  • linux的用法
  • Win10 KB5004945 更新后多个品牌打印机无法使用的解决方法
  • WIN10怎么禁止始终处于活动状态
  • 协调费用应该怎么表述才合理
  • 代收代付的垃圾清运费没发票能入账吗
  • 老板垫资如何做账务处理
  • 绿化园艺
  • 被税怎么办
  • 免抵退税会计分录怎么写
  • vue实现pdf下载
  • 解决科学文化领域的矛盾应坚持的方针是
  • 最小的电池是多大
  • 预计利润表中的销售成本如何计算
  • 商业汇票转让后,能否追索前手
  • 停在花朵上,好像在认真的听同学们读课文修改病句
  • php curl_multi_init
  • 小程序从入门到精通
  • 若依框架前端改造
  • php实现评论回复功能
  • 关于酒店采购
  • 长期股权投资核算的成本法与权益法的主要差别有哪些
  • 收到的销项负数发票如何申报
  • 转出未交增值税最终怎么转平
  • 折扣折让的会计分录
  • 普通发票需要做合同才能开吗
  • 15个postgresql数据库实用命令分享
  • 财政补贴收入怎么做账
  • 残保金需要计提吗怎样做分录
  • 外购的商品赠送客人是否销售吗
  • 企业购买商场的资本金要求是多少
  • 留底税额怎么形成的
  • 开出银行承兑汇票
  • 网上购物退货后钱多久到
  • 小规模购入固定资产怎么做账
  • 职工薪酬包括的内容
  • 签劳动合同的员工有哪些
  • 公司车辆过户给个人有年限么
  • 主营业务成本怎么结转本年利润
  • 存储过程的定义及调用方法
  • CentOS 7.2下MySQL的安装与相关配置
  • Windows虚拟机怎么打开
  • mac视频预览图不显示
  • win10控制面板如何卸载软件
  • cocos2dx schedule
  • opengl 绘制
  • 批处理文件命令大全
  • android基础教程
  • python编程字符串中删除数字
  • js时间范围
  • jquery操作
  • jquery返回顶部代码
  • 如何用python写自动化脚本
  • jquery解析XML及获取XML节点名称的实现代码
  • 税务局发涵有几种
  • 朝阳区地方税务局官网
  • 电子税务局帐号不知道怎么找
  • 设备抵扣增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设