STM を多用する clojure アプリケーションを開発しています。一般に、1 つのグローバル ref を使用するか、より小さな ref を多数使用する方がよいでしょうか。各参照はリレーショナル データベース テーブルのようにデータを格納するため、複数の参照が存在します。
2 に答える
2
より少ない参照を使用することの考えられる利点は、おそらくマルチスレッドアプリで何が起こっているのかを理解しやすくなることです。
より多くの参照を使用することの考えられる利点は、一度にロックするコードが少なくなり、速度が上がることです。
テーブルごとに参照があり、2つのテーブル間でデータの整合性を維持する必要がある場合、STMはテーブル間のデータの関係を認識していないため、そのロジックを実装する責任があります。
あなたの答えは、あるテーブルの変更が別のテーブルに影響を与える頻度と、単一の参照をテーブルごとに1つの参照に分割しても、パフォーマンスが大幅に向上するかどうかにある可能性があります。
于 2011-01-02T20:25:10.983 に答える
2
通常、参照の数を最小限に抑える方が良いことがわかりました。
主な理由:
- 多くの場合、アプリケーションの状態の大部分を単一の不変ブロックとして扱うと便利です (たとえば、分析用のスナップショットを簡単に作成したり、テスト関数に渡したりすることができます)。
- 多くの小さな参照を使用すると、より多くのオーバーヘッドが発生します
- トップレベルの名前空間をよりシンプルに保ちます
もちろん、これは最終的にはワークロードと同時実行性の要求に依存しますが、私の一般的なアドバイスは、より多くの参照が必要になることが確実になるまで、できるだけ少ない参照を使用することです。
于 2011-01-02T20:34:49.327 に答える