我正在收集分析数据。我正在使用包含许多其他嵌套地图的主地图。
考虑到地图是不可变的,将分配许多新地图。 (是的,这在Clojure中很有效) 我正在使用的基本操作是update-in,非常方便更新给定路径的值或为不存在的值创建绑定。
一旦达到特定点,我就会将该数据结构保存到数据库中。
在Clojure中更有效地收集这些数据会更好吗?瞬态数据结构?
答案 0 :(得分:1)
与所有优化一样,先测量,如果地图更新是瓶颈,那么切换到瞬态图是一个相当不引人注意的代码更改。如果您发现GC开销是真正的罪魁祸首,因为它通常是持久性数据结构,并且瞬态不足以帮助将数据收集到列表中并批量添加到瞬态映射持久性和最终保存到数据库中可能是更有效但更大的变化。添加到列表会产生非常少的GC开销,因为与添加到地图不同,旧头不需要被丢弃和GCd