#include "global.h" void detrend_const(float *pdata, float num) { unsigned int i = 0; double sum_r=0; double sum_i=0; double mean_r=0; double mean_i=0; for(i = 0; i < num; i++) { sum_r += *(pdata + 2 * i); sum_i += *(pdata + 2 * i + 1); } mean_r = sum_r / num; mean_i = sum_i / num; for(i = 0; i < num; i++) { *(pdata + 2 * i) = *(pdata + 2 * i) - mean_r; *(pdata + 2 * i + 1) = *(pdata + 2 * i + 1) - mean_i; } }
希望能占用最少的时钟周期,不考虑用汇编或线性汇编,怎么样改写最好?谢谢大神的解答!
Tony Tang:
建议看一下这编文档:spru198k:c6000 programmer guide
不考虑汇编,对于上面面段代码则考虑循环展开(unroll),以及告知编译器至少循环多少次(MUST_ITERATE)之类的信息。
Mr.a.mike:
回复 Tony Tang:
这么高级,还能告诉编译器至少执行多少次,get到一个新技能。之前还从未看过progeam guide.看来可以研究下是什么了