【发布时间】:2012-08-08 11:43:45
【问题描述】:
我有一个 JavaScript 模块来维护和操作大量数据。我有四个大型结构——每个基本上都是数组对象的对象。而且里面有很多数据。当用户执行删除或更新某些操作时,我需要遍历这些结构中的每一个并可靠地修改结构以反映更改。在某些结构中,根据用户操作,我不知道我需要更改哪个“叶子”对象,因此我必须遍历所有对象,等等。
在发生更改时操作这些大型结构的另一种方法是将它们清空并从原始数据中重建它们。这就是我的问题:
从性能的角度来看,在 Javascript 中,循环和修改现有(大型)数据结构还是简单地从原始数据重建结构会更优化?
我确定答案可能是“视情况而定”,但 a) 假设有大量数据; b) 假设该数据经常更改。
【问题讨论】:
-
好问题。我猜想在大型结构中操作每个节点的性能会低于重建,因为你正在做一个 get 和 set 而不是一个 set,但是如果你只是在一个巨大的结构中改变一个东西,那么重建将会是性能较差。但我只是推测-我没有证据! :)
-
这都是假设性的,但我的方法可能是提前做好准备,将这些大对象分解为较小对象和数组的集合。因此有望减轻不确定性和深入检查的需要。
-
听起来像是计划不周的数据结构。如果您更详细地描述您心中的目标,人们可能会帮助您更好地组织结构。
-
即使循环,也就是 O(n),对于合理的 n/C 组合来说非常快; Big-O 只是一个界限.. 是否存在性能问题? 如果没有,请不要担心性能。 尽管如建议的那样,清理模型是可能的..
标签: javascript memory