8

私が関与しているClojureシステムでSTMを使用するかどうかを決定する必要があります。これは、単一のSTM refに数GBを格納する必要があるシステムです。

Clojure STM を大規模なインデックス付きデータセットで使用する際のアドバイスがあれば、その経験を聞いてみたいと思います。

4

2 に答える 2

4

私はかなり大規模なデータ処理タスク (間違いなくギガバイト単位のデータ、通常はさまざまな Clojure コンストラクト/STM ref 内に格納された大量の大きな Java 配列) に Clojure を使用しています。

すべてが使用可能なメモリに収まる限り、単一の参照で非常に大量のデータが発生しても問題はありません。ref 自体は、その中に含まれるもののサイズに関係なく、少量の固定量の STM オーバーヘッドのみを適用します。

Clojure の標準データ構造 (マップ、ベクトルなど) に組み込まれている構造共有から、さらに素晴らしいボーナスが得られます。データ構造を合わせると、10GB を超える分数しか必要ありません。これは非常に役立ちます。特に、STM/同時実行性のために、一度に複数の異なるバージョンのデータが作成される可能性があると考える場合に役立ちます。

于 2011-01-07T19:51:36.923 に答える
1

パフォーマンスは、小さなデータセットを持つ単一の参照を含むSTMよりも悪くも良くもなりません。データセットの実際のサイズよりも、データセットの更新回数によってパフォーマンスが低下します。

データセットへのライターが1人で、リーダーが多い場合でも、パフォーマンスはかなり良好です。ただし、リーダーが1人でライターが多い場合は、パフォーマンスが低下します。

おそらく、より多くの情報が私たちがあなたをもっと助けるのに役立つでしょう。

于 2011-01-06T22:29:06.133 に答える