Javascript Nodejs服务器-通过使循环迭代异步来提高性能
考虑以下服务器端nodejs代码。假设循环中的代码是原子的(代码应该执行一次),迭代之间没有依赖关系Javascript Nodejs服务器-通过使循环迭代异步来提高性能,javascript,node.js,Javascript,Node.js,考虑以下服务器端nodejs代码。假设循环中的代码是原子的(代码应该执行一次),迭代之间没有依赖关系 for (var i=0; i<aVeryLargeValue; i++){ //do atomic complex calculations } for(var i=0;i当然,您可以根据需要将循环拆分为多个部分,但是由于开销的原因,摘要执行时间会更糟 据我所知,在JavaScript中无法运行并行循环(分别为node.js)。您的问题似乎是aVeryLargeValue导致
for (var i=0; i<aVeryLargeValue; i++){
//do atomic complex calculations
}
for(var i=0;i当然,您可以根据需要将循环拆分为多个部分,但是由于开销的原因,摘要执行时间会更糟
据我所知,在JavaScript中无法运行并行循环(分别为node.js)。您的问题似乎是aVeryLargeValue
导致服务器处理此循环的时间过长,因此会阻塞其他请求
使用async
模块进行处理。您可以使用while
功能将循环分解为多个部分
var async = require('async');
var aVeryLargeValue=99999;
var i=0;
async.whilst(
function() { return i < aVeryLargeValue; },
function(callback) {
for(x=i;x<i+1000;x++) {
//do something
}
i+=1000;
callback();
},
function(err) {
if(err) throw err;
}
);
var async=require('async');
var aVeryLargeValue=99999;
var i=0;
异步的(
函数(){return i 例如(x=i;x使事情异步并不能提高计算速度。如果做得好,它能做什么允许在长时间运行的计算过程中运行其他内容。在node中,您可以运行子进程来处理计算,并在结果完成时通知主进程。我的错误。实际上我想提高服务器性能。@jfriend00是对的-由于NodeJS是单线程的,所以拆分不会提高性能因为每个循环仍然需要在同一个线程中执行,所以将大量计算放入子进程中——这是唯一的方法。