如何通过一段代码验证JavaScript内存消耗

How to verify JavaScript memory consumption by a piece of code

两个 javascript 代码完成相同的任务将第二个数组合并到第一个数组中,我已经阅读了各种博客等声称 选项 2 内存效率更高,

有没有一种方法或工具可以自己验证并查看选项 2 中的内存使用率较低?

选项 1

//consume a lot of memory
var array1 = [1, 2, 3]; 
var array2 = [4, 5, 6]; 
console.log(array1.concat(array2));

选项 2

//reduce the memory usage
var array1 = [1, 2, 3]; 
var array2 = [4, 5, 6]; 
console.log(array1.push.apply(array1, array2));

我试过这种方法 https://www.valentinog.com/blog/node-usage/ 节点 js 代码,没有太大帮助 也试过 https://github.com/paulirish/memory-stats.js dosent 似乎有效

你的前提是错误的。两个脚本完成相同的任务。

您的第一个选项分配一个包含 6 个元素的新结果数组,并保持 array1array2 不变。 (请参阅 Array.prototype.concat() 的文档。)

var array1 = [1, 2, 3]; 
var array2 = [4, 5, 6]; 
console.log(array1.concat(array2)); // [1, 2, 3, 4, 5, 6]
console.log(array1);  // [1, 2, 3]
console.log(array2);  // [4, 5, 6]

您的第二个选项将 array2 的内容合并到 array1 中。 (请参阅 Array.prototype.push() 的文档。)

var array1 = [1, 2, 3]; 
var array2 = [4, 5, 6]; 
console.log(array1.push.apply(array1, array2)); // 6
console.log(array1);  // [1, 2, 3, 4, 5, 6]
console.log(array2);  // [4, 5, 6]

所以第二个选项总共只需要9个数组元素,而第一个选项需要12个。在语言层面上,选项2多了25%memory-efficient。您正在使用的 JavaScript 引擎实际使用了多少内存是一个实现细节。此外,像这样人为设计的示例通常不适合进行可靠的性能测试,因为引擎的 JavaScript 解释器可能会应用各种优化。