使用BF533时代码优化
0赞
发表于 8/13/2012 10:56:55 PM
阅读(3013)
在使用BF533的时候有很多简化的方法,介绍几个给大家,其实都是很简单的。
比如在处理数据的时候,具有相同长度的两个16位的数组。可以交替插入到一个两倍长的数组中,这样
就可一次就加载了所有的内容,简化了处理。原始代码要处理两次:
Short Real_Part[N]
Short Real_Part[N]
但是完全可以改写成为
Short Complex[N*2]
这样就搞定了。
再比如程序中的静态变量如果需要初始化,可以再声明中直接将静态变量进行初始化,这样编译器在初
始化时就知道该静态变量的值的,在使用的时候,可以简化代码,而且修改起来会很方便。例如:
#include<stdio.h>
static int val;
void init()
{
val=3;
}
void func()
{
printf("val %d",val);
}
int main()
{
init();
func();
}
代码改进一下,尤其是在很大的一个程序中,就会在运行程序的时候节省很多的空间,改进程序可以写
成:
#include<stdio.h>
static int val=3;
void func()
{
printf("val %d",val);
}
int main()
{
init();
func();
}
在程序计算的时候,比如实在一个循环中,大家习惯性的使用i++这种的,比如在泰勒展开中,但是如
果要是使用查表的结构,会更加运行快,尤其是对BF533这样的DSP,这样查表方式会使运行速度更加快
,但是相应的会占据一些堆栈,但是BF533的堆栈还是可以应付这点查表空间的。比如:
void sqrt(float *p)
{
for(int i=0;i<10;i++)
{
P[i]=sqrt(i);
}
}
改用查表的方式:
float sqr[10]={0,1.0,1.414,1.732.2.0,2.23,2.49,2.64,2.83,3.0}
void sqr(float *p)
{
for(i=0;i<10;i++)
{
P[i]=sqrt(i);
}
}
这样就会快很多了。
还有在BF533中,乘法运算要比平方的运算快多了,他测试过,乘法是这种pow运算的五倍以上的速度,
所以,如果pow(a,2)最好改成a*a这样的。
