Node.js未定义VS空字符串内存占用
Node.js undefined VS empty string memory usage
我正在编写的 node.js 脚本中有一个相当大的数组,它在程序内存中仅存在大约几秒钟。该数组以字符串格式存储一些其他(不相关的)数组的元数据,用于大约 6,000-7,000 项,并且在处理时将其从内存中清除。
当此数组中的值不需要任何元数据时,我只需将该值设置为空字符串 ''
。但是,我最近一直在考虑将数据类型更改为 undefined
以节省内存(毕竟 是 这个数组中的 6k 项。)
在程序优化领域,是否存在使用空字符串的 pros/cons 与 undefined
的区别?是不是差别这么小,根本不重要?我是不是想多了?
我在这里看过一个类似的问题: 他们使用空数组而不是空字符串,但我不知道空字符串占用的内存是否比空数组少。
对这些数据类型 "memory worth" 的一些说明和一些基准测试将不胜感激。
你来 SO 询问这个问题而不是自己做分析这一事实告诉我你还不需要进行优化。
undefined
和空字符串都应该有一次性分配 - undefined
实际上是对单个值的引用(因此使用它没有超出初始引擎设置的内存分配) 和 javascript 中的字符串被保留(这意味着如果您两次使用相同的字符串文字,它将两次引用内存中的相同字符串) - 这就是为什么以下表达式将评估为真:
"" === ""
"foo" === "foo"
但不是这些
[] === []
{} === {}
空字符串 可能 导致比新数组更少的内存分配,如果 JIT 编译器(如果存在的话)不会推断空数组的多个实例永远不会修改为可替换为单个空数组引用。但我们不能确定情况是否如此 - 它取决于执行环境 - 这就是为什么在尝试优化之前你应该始终针对你的目标浏览器分析你的代码。
当然,这都是假设发生的内存分配实际上是一个问题。他们可能不是。完美是足够好的敌人:)
我正在编写的 node.js 脚本中有一个相当大的数组,它在程序内存中仅存在大约几秒钟。该数组以字符串格式存储一些其他(不相关的)数组的元数据,用于大约 6,000-7,000 项,并且在处理时将其从内存中清除。
当此数组中的值不需要任何元数据时,我只需将该值设置为空字符串 ''
。但是,我最近一直在考虑将数据类型更改为 undefined
以节省内存(毕竟 是 这个数组中的 6k 项。)
在程序优化领域,是否存在使用空字符串的 pros/cons 与 undefined
的区别?是不是差别这么小,根本不重要?我是不是想多了?
我在这里看过一个类似的问题:
对这些数据类型 "memory worth" 的一些说明和一些基准测试将不胜感激。
你来 SO 询问这个问题而不是自己做分析这一事实告诉我你还不需要进行优化。
undefined
和空字符串都应该有一次性分配 - undefined
实际上是对单个值的引用(因此使用它没有超出初始引擎设置的内存分配) 和 javascript 中的字符串被保留(这意味着如果您两次使用相同的字符串文字,它将两次引用内存中的相同字符串) - 这就是为什么以下表达式将评估为真:
"" === ""
"foo" === "foo"
但不是这些
[] === []
{} === {}
空字符串 可能 导致比新数组更少的内存分配,如果 JIT 编译器(如果存在的话)不会推断空数组的多个实例永远不会修改为可替换为单个空数组引用。但我们不能确定情况是否如此 - 它取决于执行环境 - 这就是为什么在尝试优化之前你应该始终针对你的目标浏览器分析你的代码。
当然,这都是假设发生的内存分配实际上是一个问题。他们可能不是。完美是足够好的敌人:)