我决定在内存中存储大量时间序列数据的最佳方法,我做了一个简单的基准测试来比较缓冲区与简单数组:
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
因此,根据此基准测试,阵列的速度提高了5倍以上,内存减少了18%。它是否正确?我当然希望缓冲区占用更少的内存。
答案 0 :(得分:0)
您创建的每个缓冲区都有开销(时间和空间)。
如果你进行比较,我希望你能获得更好的空间(也许是时间)
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);
}