考虑以下两种选择:在V8中,为什么preallocated数组消耗更少的内存?
const mb_before = process.memoryUsage().heapUsed/1024/1024;
const n = 15849;
const o = 115;
const entries = [];
for (var i = 0; i < n; i++) {
const subarr = [];
for (var j = 0; j < o; j++) {
subarr.push(Math.random());
}
entries.push(subarr);
}
const mb_after = process.memoryUsage().heapUsed/1024/1024;
console.log('arr using ' + (mb_after - mb_before) + ' megabyte');
// arr using 15.110992431640625 megabyte
和
const mb_before = process.memoryUsage().heapUsed/1024/1024;
const n = 15849;
const o = 115;
const entries = new Array(n);
for (var i = 0; i < n; i++) {
const subarr = new Array(o);
for (var j = 0; j < o; j++) {
subarr[j] = Math.random();
}
entries[i] = subarr;
}
const mb_after = process.memoryUsage().heapUsed/1024/1024;
console.log('arr using ' + (mb_after - mb_before) + ' megabyte');
// arr using 12.118911743164062 megabyte
从我的理解这两个数组大小应该是相同的,他们只实例化不同的方式。如何解释由此产生的内存使用情况始终不同?
一句话?优化。 –
@ T.J.Crowder感谢您的纠正;仍然想知道如何基于数组实例化的方法以不同的方式优化数据量的持久性 – Tom
对不起,并不意味着我的删除评论作为*更正*,正如一个合议的笑话。对不起,如果没有遇到。 –