为什么数组的内存less于node.js中的缓冲区?

我正在决定将大量时间序列数据存储在内存中的最佳方法,我做了一个简单的比较缓冲区和简单数组的比较:

var buffers = {}; var started = Date.now(); var before = process.memoryUsage().heapUsed; for (var i = 0; i < 100000; i++) { buffers[i] = new Buffer(4); buffers[i].writeFloatLE(i+1.2, 0); // buffers[i] = [i+1.2]; } console.log(Date.now() - started, 'ms'); console.log((process.memoryUsage().heapUsed - before) / 1024 / 1024); 

结果如下:

 Arrays: 22 'ms' 8.391242980957031 Buffers: 123 'ms' 9.9490966796875 

所以根据这个基准,arrays速度提高5倍以上,内存减less18%。 它是否正确? 我当然期望缓冲区占用较less的内存。

每个缓冲区都有一个开销(时间和空间)。

如果你比较,我希望你会得到更好的空间(也许是时间)

 buffers[i] = new Buffer(4*1000); for(k=0;j<1000;++j) { buffers[i].writeFloatLE(i+k+1.2, 4*j); } 

 buffers[i] = []; for(k=0;j<1000;++j) { buffers[i].push(i+k+1.2); }