node.js中的foreach是同步还是异步
1个回答
展开全部
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倍左右。
同步和异步操作使用的是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倍左右。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询