1

(私は C# を使用していますが、これは必ずしもプラットフォーム固有ではありません)

キーのトリプレット(A、B、C)によってインデックス付けされた値のテーブルがあるとします。表の値は、散発的な間隔で外部ソースからストリーミングされています。たとえば、B = b1 のすべての値の合計を計算します。

毎回テーブル全体を反復処理するだけであれば、これは簡単ですが、明らかに効率的ではありません。私が疑問に思っているのは、sum(B = b1)この合計に影響するテーブルの値が変更されたときにのみ更新するように設計する特に良い方法はありますか? その集約に含まれるすべての値のリストを保持する何らかのAggregationオブジェクトを作成する必要があるようですが、私を逃れているもっとエレガントな方法があるかもしれないと感じています. 「リアルタイム」LINQクエリのようなもの...

4

2 に答える 2

1

を使用しDictionary<TypeOfB, int>ます。新しい b を追加するたびに、

dictionary[b] += value;

値が変更された場合は、

dictionary[b] += (newValue - oldValue)
于 2010-01-25T19:19:36.870 に答える
0

あなたが提示した単純な例についてはOnValueChanging、値が変化しようとしていることを知らせるイベントを作成してみませんか? 次に、現在の値を記録できますx。次に、別のイベントを発生OnValueChangedさせ、新しい値を記録しますy。次に、更新する合計は ですcurrentSum - x + y

于 2010-01-25T19:17:52.990 に答える