gpt4 book ai didi

javascript - Node.js 未定义 VS 空字符串内存使用

转载 作者:行者123 更新时间:2023-12-02 22:12:05 26 4
gpt4 key购买 nike

我正在编写的 Node.js 脚本中有一个相当大的数组,它在程序内存中仅存在大约几秒钟。该数组以字符串格式存储约 6,000-7,000 个项目的其他(不相关)数组的元数据,处理后会从内存中清除。

当此数组中的值不需要任何元数据时,我只需将该值设置为空字符串 ''。不过,我最近一直在考虑将数据类型更改为 undefined 以节省内存(毕竟,该数组中有 6k 个项目。)

在程序优化领域,使用空字符串与使用未定义相比有什么优点/缺点吗?难道差别这么小,根本不重要吗?我是不是想太多了?

我在这里查看了类似的问题:Memory overhead of empty array vs undefined var?他们使用空数组而不是空字符串,但我不知道空字符串是否比空数组占用更少的内存。

对这些数据类型的“内存值(value)”进行一些澄清以及一些基准测试将不胜感激。

最佳答案

事实上,您来 SO 询问这个问题而不是自己进行分析,这告诉我您还不需要进行优化。

undefined 和空字符串都应该有一次性分配 - undefined 实际上是对单个值的引用(因此使用它没有超出内存分配范围)初始引擎设置)和 javascript 中的字符串被保留(这意味着如果您使用相同的字符串文字两次,它将两次引用内存中的相同字符串) - 这就是为什么以下表达式将计算为 true:

"" === ""
"foo" === "foo"

但不是这些

[] === []
{} === {}

如果 JIT 编译器(如果存在的话)不会推断出从未被修改为可替换的空数组的多个实例,则空字符串可能会导致比新数组更少的内存分配单个空数组引用。但我们无法确定情况是否如此 - 这取决于执行环境 - 这就是为什么您应该在尝试优化之前始终根据目标浏览器分析代码。

当然,这一切都假设正在发生的内存分配实际上是一个问题。他们可能不是。完美是足够好的敌人:)

关于javascript - Node.js 未定义 VS 空字符串内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com