[英]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.