【问题标题】:Do Typescript Arrays allocate memory for empty indices?Typescript 数组是否为空索引分配内存?
【发布时间】:2018-05-05 04:18:48
【问题描述】:

我正在尝试复制服务器端数据库的一部分,以便在打字稿 Web 应用程序中进行处理。我需要通过打字稿中的整数 ID 访问各种记录。我看到的一个问题是索引可能不连续,也不以 0 开头(事实上,如果数据库的一部分已被删除,它们的开头值可能远高于零)。

给定以下代码:

let a: Array<number> = new Array<number>();
a[10] = 1;
a[11] = 2;

如果我在 Chrome 中检查 a,我会看到:

(12) [empty × 10, 1, 2]

这让我相信我已经为 12 个值分配了内存,但我只使用了最后 2 个。这对于小的起始索引来说没什么大不了的,但是如果我有数百万的第一个索引,并且正在使用数组中较大的对象,它可能会成为一个重要的内存问题。

我是否正确假设即使为未使用的索引也分配了内存?如果是这样,允许使用非连续索引的更好容器是什么?

【问题讨论】:

    标签: javascript arrays typescript memory


    【解决方案1】:

    这取决于 JavaScript 运行时的实现,但一般来说,稀疏数组只为实际使用的元素分配内存。

    据我所知,例如,Chrome 在内部将稀疏数组存储为字典,这就是为什么您可能还会在稀疏数组和完整数组之间体验到不同的性能特征。

    【讨论】:

      猜你喜欢
      • 2015-09-09
      • 2013-02-24
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多