我写了一个求128点数据均方根的函数,测试发现太耗时间,大家看看能否有什么可优化的地方。
程序运行在TI的DSP芯片28335上面,主频150MHz,测试出运行时间大概20多us,这个时间是根据程序运行情况估算出来的,不是很准确,但时间肯定不会太短。
函数代码如下
float32 rms_calculate_window_128(Float32 data)
{
static uint16 n=0;
static Float32 sum=0;
static Float32 rms_out;
static Float32 rms_window_square[128];
static uint16 flag = 0;
uint16 nn;
if(flag==0)
{
flag = 1;
for(nn=0;nn<128;nn++)
{
rms_window_square[nn] = 0;
}
}
sum = 0;
for(nn=0;nn<128;nn++)
{
sum += rms_window_square[nn];
}
rms_window_square[n] = data * data;
rms_out = sqrt(sum/128);
if(n++>=127)
n = 0;
return rms_out;
}
/*
这个代码可能需要C++11支持,低版本编译器可能不行。
for (auto m : score) {
sum += m;
}*/
我猜是用auto?