node.js中的foreach是同步还是异步

 我来答
爱染年
2016-09-13 · 知道合伙人互联网行家
爱染年
知道合伙人互联网行家
采纳数:4751 获赞数:7830
国家励志奖学金获得者

向TA提问 私信TA
展开全部
  node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,fs.readFileSync()是fs.readFile()的同步版本。

  同步和异步操作使用的是fs的readFileSync和readFile得出以下结论:

  1、测试中node.js的异步和同步操作,http_load
发起的请求数目巨大,但是该数目在线性提高频率的情况下并不是线性增长,说明如此增长下去会慢慢遇到顶了。同步操作下每秒请求数目提高10倍,每秒请求数目接近翻倍。

  2、最大的并发进程数目瓶颈 是143 左右,该值应该是固定值(估计与机器配置相关,大家可以验证一下)。

  3、同步和异步操作 的每个连接平均传输的数据字节量 差异巨大有10倍的差距,同步操作和异步操作在并发量大幅增加,每个连接的平均字节变化不大。

  4、每秒处理的请求数目有明显差异,低并发下异步操作每秒处理的请求量是同步操作的两倍,高并发下两者差异明显减小。同类型相比的话,同步操作提升明显,异步操作增长趋缓,但还是明显高于同步操作。

  5、由于每秒处理的请求数目有明显差异,异步操作比同步操作多一个数量级,大约为20倍。

  6、每个链接平均需要的毫秒数时间,同步大约是异步的10倍。最大值差异大,最小值差异小。

  7、第一次响应平均需要的毫秒时间,低并发下,同步是异步操作的8.14被;大并发下,同步是异步的 3.5倍;

  8、低并发下:同步请求成功率794/20240*100% = 3.92%, 异步请求成功率21772/41530*100% =
52.42%;高并发下:同步请求成功率1557/38011*100% = 4.096%,异步请求成功率25786/49909*100% =
51.66%;不同并发下,同类型的操作成功率差别不大,但是异步操作的成功率是同步操作的12.5倍左右。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式