当处理具有不同键的许多对象时,nodejs中的严重性能问题

时间:2015-08-11 03:09:38

标签: node.js v8

根据this article,v8引擎将为每种不同类型的对象生成隐藏类。不幸的是,用户需要非常小心地设计数据结构,否则可能会出现严重的性能问题。

请参阅以下代码,此代码运行速度非常慢,因为v8为每个'obj'创建了隐藏类,因为它们有不同的键:

// run in nodejs v0.12
for(var i=0; i<100000; i++){
   var obj = {};
   obj[Math.random()] = true;
}
//too slow 35.8s!

但是,当我在此代码中添加技巧时,性能提高了300倍

for(var i=0; i<100000; i++){
   var obj = {k : 1};
   delete obj.k; // trick v8 not to use hidden class
   obj[Math.random()] = true;
}
// 0.19s!

所以问题是,有没有更好的方法(官方方式)来避免这种性能问题?我需要使用Nodej来处理大量数据,这种性能问题几乎是不可避免的。

0 个答案:

没有答案