C语言for语句累加怎么提高效率?

我写了一个求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?