Node.js未定义VS空字符串内存使用情况

问题描述 投票:0回答:1

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

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

在程序优化领域中,使用空字符串与undefined有什么利弊?差异是如此之小,甚至都没有关系吗?我是否在考虑这个愚蠢的事情?

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

将对这些数据类型的“内存值”进行一些澄清,并进行一些基准测试将非常有用。

javascript node.js optimization benchmarking
1个回答
1
投票

[您来SO而不是自己进行概要分析的事实告诉我,您还不需要进行优化。

undefined和一个空字符串都应具有一次性分配-undefined实际上是对单个值的引用(因此,使用它时,除了初始引擎设置以外,它没有任何内存分配),并且javascript中的字符串已被嵌入(这意味着如果您两次使用相同的字符串文字,它将两次在内存中引用相同的字符串)-这就是为什么以下表达式将得出true的原因:

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

但不是这些

[] === []
{} === {}
如果JIT编译器应该存在,则

空字符串可能导致的内存分配比新数组少,而不是推断一个空数组的多个实例从未被修改为可以替换为单个空数组参考。但是我们不能确定确实是这种情况-这取决于执行环境-这就是为什么在尝试进行优化之前,应该始终针对目标浏览器配置代码的原因。

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

© www.soinside.com 2019 - 2024. All rights reserved.