1

現在の値を持つ変数がありますが、値を変更するときは、最初に過去のX個の値を表示するデータ構造に過去の値を格納する必要があります。

これは、最新の値の平均など、過去の値に対してあらゆる種類の計算を行うためのものです。

私の唯一のアイデアは、これにキューを使用することでした。過去のX値のみが必要なため、古い値を自動的にデキューするFixedSizedQueueを実装しました。

それ以来、少なくともキューのデフォルトの実装では、ランダムな値に実際にアクセスできないことがわかりました。しかし、それに加えて、その作業を行うと、速度が遅くなり、すべての値を反復処理する必要があります。

だから私はこれを効率的に行う方法はないのだろうかと思っています。私が考えることができる他の唯一の方法は、配列を作成し、すべての要素を1つのインデックス位置だけ移動するプッシュ機能を実装することです。しかし、それは無駄すぎるようです。これらが2つのオプションしかない場合、データ構造内の各値に変更するたびに20回アクセスする必要があり、サイズは50個の値が格納されるとしたら、どちらが良いでしょうか。

これは、パフォーマンスが非常に重要になる場所です。「記録」される各変数は、私が持っているデータを反復処理するときに少なくとも100万回変化するため、時期尚早の最適化を行う心配はありません。ありがとう、ありがとう!

4

1 に答える 1

3

リングバッファ/循環バッファを探しています。

ac#の実装はここにあります

于 2013-02-24T09:24:47.750 に答える