2

分析データを収集しています。他の多くのネストされたマップを保持するマスターマップを使用しています。

マップが不変であることを考慮すると、多くの新しいマップが割り当てられます。(はい、それはClojureでは効率的です)。
私が使用している基本的な操作はupdate-inで、特定のパスの値を更新したり、存在しない値のバインディングを作成したりするのに非常に便利です。

特定のポイントに到達したら、そのデータ構造をデータベースに保存します。

Clojureでこれらのデータをより効率的に収集するためのより良いアイデアは何でしょうか?一時的なデータ構造?

4

1 に答える 1

1

すべての最適化と同様に、最初に測定します。マップの更新がボトルネックである場合、一時的なマップへの切り替えは、かなり邪魔にならないコード変更です。永続的なデータ構造でよくあるように、GCのオーバーヘッドが本当の原因であり、トランジェントが十分に役に立たない場合は、データをリストに収集し、トランジェントマップにバッチで追加して、永続的にしてDBに保存します。大きな変化はありますが、終わりはより効果的かもしれません。マップに追加するのとは異なり、古いヘッドを破棄してGCdする必要がないため、リストに追加するとGCのオーバーヘッドはほとんど発生しません。

于 2012-08-10T20:33:23.550 に答える