簡體   English   中英

計算隨大小增加的向量的平均值

[英]Calculating averages of a vector with increasing size

我有一個渲染功能,每秒運行數百次,它告訴我每幀繪制需要多少毫秒。

我制作了一個函數來計算所有幀的當前渲染速度平均值,該函數使用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());
}

有人可以幫我解決這個問題嗎?

謝謝

給定算術平均值的定義是sum( n ) / count( n )您不需要存儲n每個值即可重新計算運行平均值,您只需要當前的sum和current count ,就像這樣:

double runningMean(double newValue) {
    static double sum = 0;
    static double count = 0;

    count++;
    sum += newValue;

    return sum / count;
}

完全不需要vector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM