C++ 计算大小不断增加的向量的平均值
我有一个每秒运行数百次的渲染函数,它告诉我每个帧需要多少毫秒来绘制 我制作了一个函数来计算所有帧的当前渲染速度平均值,它使用std::vector来保存所有之前的帧 但是,每次我运行程序时,存储平均值的向量都会变得巨大,占用越来越多的内存,同时会将程序速度降低近10倍(绘图速度)C++ 计算大小不断增加的向量的平均值,c++,visual-studio,c++11,C++,Visual Studio,C++11,我有一个每秒运行数百次的渲染函数,它告诉我每个帧需要多少毫秒来绘制 我制作了一个函数来计算所有帧的当前渲染速度平均值,它使用std::vector来保存所有之前的帧 但是,每次我运行程序时,存储平均值的向量都会变得巨大,占用越来越多的内存,同时会将程序速度降低近10倍(绘图速度) 平均函数(请注意我是C++初学者): 双平均(标准::矢量输入\u矢量) { 双倍合计=0; for(无符号整数i=0;i
平均函数(请注意我是C++初学者):
双平均(标准::矢量输入\u矢量)
{
双倍合计=0;
for(无符号整数i=0;i
有人能帮我修一下吗
谢谢鉴于算术平均值的定义是
sum(n)/count(n)
您不需要存储n
的每个值来重新计算运行平均值,您只需要当前sum
和当前count
,如下所示:
double runningMean(double newValue) {
static double sum = 0;
static double count = 0;
count++;
sum += newValue;
return sum / count;
}
根本不需要向量。鉴于算术平均值的定义是
sum(n)/count(n)
您不需要存储n
的每个值来重新计算运行平均值,您只需要当前sum
和当前count
,如下所示:
double runningMean(double newValue) {
static double sum = 0;
static double count = 0;
count++;
sum += newValue;
return sum / count;
}
根本不需要
vector
。通过引用而不是通过值传递向量:双平均值(std::vector&input_vector)
--此代码每次都复制整个向量。另外,使用操作符[]
代替处的。或者直接使用std::accumulate
。这可以在C++17 btw中自动并行化(也可以使用libstdc++,但这不是您正在使用的)。谢谢你们的提示。我以后一定会记住的!通过引用而不是通过值传递向量:双平均(std::vector&input_vector)
——此代码每次都会复制整个向量。另外,使用操作符[]
代替处的。或者直接使用std::accumulate
。这可以在C++17 btw中自动并行化(也可以使用libstdc++,但这不是您正在使用的)。谢谢你们的提示。我以后一定会记住的!