在Javascript中:内存分配与大对象操作

mis*_*nky 6 javascript memory

我有一个JavaScript模块,可以维护和操作大量数据.我有四个大型结构 - 每个基本上都是数组对象的对象.其中有很多数据.当用户执行删除或更新某些操作时,我需要浏览每个结构并可靠地修改结构以反映更改.在某些结构中,根据用户操作,我不知道我需要更改哪个 "叶子"对象,所以我必须遍历所有,等等.

在发生更改时操作这些大型结构的替代方法是将它们清空并从原始数据重建它们.那是我的问题:

从性能的角度来看,在Javascript中,循环和修改现有(大型)数据结构或简单地从原始数据重建结构会更优化吗?

我肯定答案可能是"它取决于",但a)假设大量数据; b)假设频繁更改该数据.

Lau*_*rin 0

我不确定它是否适用于这里,但这让我想起了 wingolog.org 上一篇关于 v8 实现的博客文章:

Ed.:Vyacheslav Egorov 写道,V8 保留的实际上是函数源代码,而不是 AST。它根据需要重新解析。说得通。我记得 Lars Bak 在视频中说过,源是目前最紧凑的 IR,也许情况确实如此。

所以基本上,当 v8 编译 JavaScript 时,它只保留原始数据(源代码),因为在这种情况下,内存占用对性能影响最大。