NodeJS中有多个embedded式循环

我喜欢执行下面的代码…但是正如你所看到的那样 – 这将需要100亿个循环! 所以我想知道 – 你们会build议让它旋转得更快吗?

之所以这样做,是因为最内在的方法需要对一些历史数据进行一些复杂的计算 – 从数据库中获得大约700万行数据,是find给定参数af的最佳“设置”,其给出最佳结果…

var a = 0.1; while(a <= 10) // 100 { var b = 0.1; while(b <= 10) // 100 { var c = 0.1; while(c <= 10) // 100 { var d = 0.1; while(d <= 10) // 100 { var e = 1; while(e <= 10) // 10 { var f = 1; while(f <= 10) // 10 10.000.000.000 { // Call at method which use all parameters and return the result of a given calculation //doSomeThing(a,b,c,d,e,f); f += 1; } e += 1; } d += 0.1; } c += 0.1; } b += 0.1; } a += 0.1; } 

使用核心群集模块将循环分成更小的块和叉进程,在叉中处理每个较小的块。 叉将运行在不同的线程上,更好地利用CPU。

https://nodejs.org/api/cluster.html#cluster_how_it_works

UPDATE。 好的,不要使用群集。 使用线程模块,而不是 – 它会容易得多。 https://www.npmjs.com/package/threads

 var cores = require('os').cpus().length; var Pool = require('threads').Pool; var pool = new Pool(cores); var doSomeThing = pool.run(function(data,done){ var result = data.a * data.b * data.c * data.d * data.e * data.f; done(result,data); }) var a = 0.1; var b = 0.1; var c = 0.1; var d = 0.1; var e = 0.1; var f = 0.1; while(a <= 10) // 100 loops { while(b <= 10) // 100 loops { while(c <= 10) // 100 loops { while(d <= 10) // 100 loops { while(e <= 10) // 10 loops { while(f <= 10) // 10 loops { // Call at method which use all parameters and return the result of a given calculation doSomeThing.send({a:a,b:b,c:c,d:d,e:e,f:f}); f += 0.1; } e += 0.1; } d += 0.1; } c += 0.1; } b += 1; } a += 1; } pool .on('error', function(job, error) { console.error('Job errored:', job); }) .on('finished', function() { console.log('Everything done, shutting down the thread pool.'); pool.killAll(); });