使用node.js并行操作数组元素?

时间:2015-06-28 04:59:58

标签: javascript arrays node.js parallel-processing

我有一个像这样的json对象数组 -

var resultsArr = [
{
    "upvotes": "45",
    "postID": "4555",
    "numberOfComments": "45",
    "shares":"22"
},
{
    "upvotes": "21",
    "postID": "4665",
    "numberOfComments": "20",
    "shares":"24"
},
{
    "upvotes": "4",
    "postID": "77366",
    "numberOfComments": "0",
    "shares":"4"
},
{
    "upvotes": "49",
    "postID": "6565",
    "numberOfComments": "22",
    "shares":"54",

}];

我需要根据scoreupvotesnumberOfComments计算一个值shares,然后将其推回到JSON字典中,以便数组中的每个对象看起来像这个 -

var resultsArr= [{
....
},
{
    "upvotes": "49",
    "postID": "6565",
    "numberOfComments": "22",
    "shares":"54",
    "score":"20"
}]

我可以使用for loop访问此数组中的json对象,但根据我的理解,它会按顺序访问每个元素。

鉴于我将在阵列中拥有大约100-200个项目,如何加快分数计算过程以并行访问每个元素,从而减少计算数组中每个元素的分数所需的时间? / p>

P.S我正在对此进行编码,假设数组中的元素将来可能会增长到300-400个元素。

2 个答案:

答案 0 :(得分:1)

  

如何加快分数计算过程以平行访问每个元素,从而减少计算数组中每个元素的分数所需的时间?

你不能(合理地)。 NodeJS只运行一个线程。要获得多个执行线程,您必须生成一个子进程,这比在一个线程上执行它更慢 lot

300-400元素什么都不是(甚至3-4 百万什么都不是; 3M在我的机器上花了大约289ms,4M花了384ms)。不需要让事情复杂化。只是:

resultsArr.forEach(function(entry) {
    // update `entry` here
});

答案 1 :(得分:0)

我通常使用这段代码

window_size