2012-08-10 36 views
2

我正在收集分析數據。我正在使用包含許多其他嵌套地圖的主地圖。收集分析數據的更好主意/數據結構

考慮到地圖是不可變的,許多新地圖將被分配。 (是的,這在Clojure中是有效的)。
我正在使用的基本操作是update-in,非常方便更新給定路徑的值或爲不存在的值創建綁定。

一旦我達到了某個特定點,我將把該數據結構保存到數據庫中。

在Clojure中更有效地收集這些數據會更好嗎?一個瞬態數據結構?

回答

1

與所有的優化一樣,首先測量,如果地圖更新是瓶頸,那麼切換到瞬態地圖是一個非常不引人注意的代碼更改。如果您發現GC開銷是真正的罪魁禍首,因爲它通常具有持久的數據結構,並且瞬態沒有足夠的幫助,那麼將數據收集到列表中並批量添加到瞬態映射中,該瞬態映射被持久化並保存到儘管更大的變化,DB最終可能會更有效。添加到列表中會產生非常少的GC開銷,因爲與添加到映射不同,舊頭不需要被丟棄,並且GCd