0
私は、毎秒何百回も実行されるレンダリング機能を持っており、各フレームが描画する時間は何ミリ秒であるかを教えてくれます。サイズが大きくなるにつれてベクトルの平均を計算する
すべてのフレームの現在のレンダリング速度平均を計算する関数を作成しました。この関数は、すべての前のフレームを保持するためにstd :: vectorを使用します。
しかし、私がプログラムを実行するたびに、平均値を格納するベクトルは膨大になり、プログラムの速度を約10倍遅くするとともに、メモリの使用量が増加します(描画速度)。
アベレージ機能(私はC++初心者です注意してください):
double average(std::vector<double> input_vector)
{
double total = 0;
for(unsigned int i = 0; i < input_vector.size(); i++)
{
total += input_vector.at(i);
}
return (total/(double)input_vector.size());
}
誰かが私はこの問題を解決する手助けすることはできますか?
は、算術演算の定義を考えると
値ではなく、参照によってベクトルを渡します。 'double average(std :: vector&input_vector)' - このコードは、毎回ベクトル全体のコピーを作成しています。オイ。 –
また、 'at'の代わりに' operator [] 'を使用してください。あるいは単に 'std :: accumulate'を直接使用してください。これはC++で自動的に並列化できます.17 btw。 (libstdC++でも、それはあなたが使っているものではありません。) –
あなたのヒントをありがとう。私は間違いなくそれらを将来心に留めておくでしょう! – 0x22fe