2

我正在收集分析数据。我正在使用包含许多其他嵌套地图的主地图。

考虑到地图是不可变的,许多新地图将被分配。(是的,这在 Clojure 中很有效)。
我使用的基本操作是 update-in ,非常方便更新给定路径的值或为不存在的值创建绑定。

一旦达到特定点,我就会将该数据结构保存到数据库中。

在 Clojure 中更有效地收集这些数据会有什么更好的主意?瞬态数据结构?

4

1 回答 1

1

与所有优化一样,首先测量,如果地图更新是一个瓶颈,那么切换到瞬态地图是一个相当无干扰的代码更改。如果您发现 GC 开销是真正的罪魁祸首,因为它通常是持久性数据结构,并且瞬态没有足够的帮助,那么将数据收集到一个列表中并将其批量添加到一个瞬态映射中,该映射持久化并保存到数据库中最终可能是一个更有效但更大的变化。添加到列表会产生非常少的 GC 开销,因为与添加到映射不同,旧的头不需要被丢弃和 GCd

于 2012-08-10T20:33:23.550 回答