位置: 编程技术 - 正文

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(我吐槽你)

  • 补充养老保险补充医疗保险税前扣除比例
  • 桥闸通行费怎么做账务处理
  • 公司替个人交的水电费计入哪里了
  • 淘宝网店女装
  • 电子发票怎么入库
  • 旅行社支付导游费怎么算
  • 税务机关如何正确行使代位权
  • 未能及时取得成功的成语
  • 个人垫付费用报销申请怎么写
  • 固定资产报废废铁收入需要交税吗
  • 税务局扣税余额不足
  • 福利费可以抵扣个税吗
  • 季度企业所得税计算方法举例
  • 营改增之后还有营业税金及附加吗
  • 对公账户提取备用金可以每天提现嘛
  • 增值税专普票清卡失败的原因是什么?
  • 企业所得税汇算清缴退税账务处理
  • 中小企业结算时间不超60天
  • 委托个人加工应税消费品纳税地点
  • 购买方取得专票会计分录
  • 企业零申报用错法人情况说明
  • 主营业务收入多计跨年调整
  • 应付利息和应计利息怎么区分
  • mac文件怎么用
  • 微信转账的手续费规则
  • 金蝶kis期初余额设置
  • Win7系统中如何快速查询文件内容
  • 有进项没销项怎么处理,可以结转成本吗
  • PHP:Memcached::append()的用法_Memcached类
  • 其他应付款的核算范围包括应付短期租赁
  • 其他存货包括哪些内容
  • ibm-web-ext.xmi
  • hhcol.exe
  • 其他应收款的会计处理
  • 区分不同情形
  • 文件上传漏洞及解决方案
  • 房地产公司活动方案
  • 销售提成收入证明怎么写
  • 劳保用品会计科目进什么科目
  • HTML常用的表单控件有哪些
  • python输入三个数输出最小的
  • 经营租赁业务会计账务处理
  • html常用标签有哪些
  • 销售旧货税率
  • python复制文件的代码
  • access使用查询设计视图计算并显示平均成绩
  • 小微企业季度申报所得税税率
  • 劳务报酬包括哪些
  • mysql金额用什么数据类型
  • 原来的预提费用取消后放哪里
  • 继续教育的相关知识
  • 未分配利润是否可以全部分红
  • 员工餐费报销分录怎么弄
  • 另一种收到企业信息英文
  • 本月损益类未结转为零的一级科目怎么操作
  • 资产负债表金额的来源一般是
  • 新成立的公司工会经费免交一年吗
  • sql查询字段被包含的内容
  • sql server获取字段长度
  • sql语言包括哪三种类型
  • win10安装完成后需要做哪些设置
  • win8快捷方式
  • hpp是什么文件
  • win8操作系统安装
  • get mac
  • rsmsink.exe - rsmsink是什么进程 有何作用
  • mm server conection failed
  • nfs网络安装
  • win7系统怎么关闭屏幕保护
  • intellij idea2021安装教程
  • 文件上传的三个条件
  • node网络爬虫
  • 电脑安装node
  • Node.js中的事件循环是什么意思
  • Python文件处理
  • unity uishader
  • python第三方库文档怎么看
  • js 不用var
  • python电话本
  • jquery里面的$是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设