我有〜10.000.000个时间键和相关的JSON数据点。 我需要在所有这些数据点上执行一个JavaScript函数fn(time,data [time],params)多次(~10,000)并使用不同的参数。
我使用npm模块hashtable将数据存储在V8s VM之外。
//PSEUDO-STRUCTURE
var params = [{...},{...},...];
var HashTable = require("hashtable");
var myBigObject = new HashTable();
var timeIndices = {};
for(...) {
myBigObject.put(time,data); //<-- many times
timeIndices[time] = true;
}
indices = Object.keys(indices);
params.forEach(function(currentParams) {
timeIndices.forEach(function(time) {
var data = myBigObject.get(time);
fn(time,data,currentParams);
});
});
我遇到了以下问题:
这在内存方面有效,但速度很慢。我怎样才能加快速度呢?
对工人进行分区参数(有效,但受可用内存限制)
工作人员的分区时间
只保留部分对象在内存中并在需要时从磁盘重新加载(速度慢,但内存效率高)
如何在node.js进程之间共享一个巨大的只读JavaScript哈希对象,而不会增加内存占用量?
答案 0 :(得分:0)
(注意:评论中的空间太小,所以这里有一个建议)
以下是几个问题?
这是一个想法:
indices
密钥。这些步骤中哪一个对您有用?
答案 1 :(得分:0)
我有类似的需求,同样没有找到我想要的包。所以我从&#34;更新,创意2.0&#34;中得到了启示。段落和implemented a module.
它在共享内存中维护一个哈希结构的副本(从文件映射),并允许同一个盒子上的多个Node进程进行只读查询。
它是用C ++编写的,使用Boost's unordered_map
作为哈希系统。