如何通过一段代码验证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 个元素的新结果数组,并保持 array1
和 array2
不变。 (请参阅 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 解释器可能会应用各种优化。
两个 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 个元素的新结果数组,并保持 array1
和 array2
不变。 (请参阅 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 解释器可能会应用各种优化。