最近要考核一些代码运行时间,无意中发现CCS3.3与CCS5.4相同的代码执行时间不同!!!
其中sin、tan、atan、浮点数除法有较大差异。以下为具体代码,每行代码后的注释为RAM仿真得到的时钟周期,左侧为CCS3.3、右侧为CCS5.4。
求指教,多谢多谢!!!
void main(void)
{
unsigned int i=0;
unsigned int a=0,b=0,c=0,d=0;
unsigned int array[10]={1,2,3,4,5,6,7,8,9,10};
float farray[10]={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0};
float aa=0.0,bb=0.0,cc=0.0,dd=0.0;
InitSysCtrl();
for(;;)
{
a=1; //1
a=1.1; //1
a++; //1,3
b=1+2; //1,3
c=a+b; //3,4
c=a-b; //3,5
c=a*b; //3,4
c=a/b; //19,21
c=sqrt(a); //76,53
c=sqrt(2); //76,52
c=sin(a); //73,125
c=asin(a); //42,62
c=cos(a); //73,73
c=acos(a); //44,62
c=tan(a); //303,153
c=atan(a); //782,94 /***************/
c=a>>1; //3,5
c=a>>8; //3,4
c=a<<1; //2,3
c=a<<8; //2,4
c=a>b; //5,8
c= a==b;//5,7
c=abs(a); //4,5
aa=1; //2,5
aa=1.1; //2,5
aa++; //4,8
bb=1+2; //2,4
cc=aa+bb; //5,9
cc=aa-bb; //5,10
cc=aa*bb; //5,9
cc=aa/bb; //233,39 /***************/
cc=sqrt(aa);//72,47
cc=sqrt(2); //72,47
cc=sin(aa); //69,67
cc=sin(aa+2.0/3.0*PI); //72,73
cc=asin(aa);//38,57
cc=cos(aa); //69,67
cc=cos(aa+2.0/3.0*PI); //72,73
cc=acos(aa);//40,57
cc=tan(aa); //299,147
cc=atan(aa);//778,89
cc=a>>1; //11,18
cc=a>>8; //11,18
cc=a<<1; //10,17
cc=a<<8; //10,17
cc=a>bb; //16,27
cc= aa==bb; //15,27
cc=fabs(aa);//3,6
}
}
