システムは、1 秒ごとに 1 つの測定値を受け入れます。システムは 6 つのリアルタイム プロットを表示します。
- ぎりぎり
- 最後の時間
- 最後の日
- 先週
- 先月
- 去年。
たとえば、これは、1 年の各月の平均気温を示す測定値の美しい年間プロットです (プロットが直線で結ばれた 12 のデータポイントで構成されているとします)。いつ、どのように更新すればよいですか?最悪の場合は、測定ごとに (1 秒に 1 回) 各月の平均気温を再計算し、プロットを再描画することです。
循環バッファーを使用して解決する直前のプロット - 新しい測定値は単純に毎秒 deque にプッシュされます。
他のプロットはどうですか?それぞれの再計算を最小限に抑えるにはどうすればよいでしょうか。
解決
すべてのベクトルの平均を維持します。新しいイベントが発生した場合、更新するベクトルを確認します (time % vector_sample_period)。選択したベクトルについて、前のベクトルに平均を求め、それを独自の循環バッファーにプッシュします。