TI中文支持网
TI专业的中文技术问题搜集分享网站

150M28335在不同CCS版本下RAM仿真时间不一致!!!

最近要考核一些代码运行时间,无意中发现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
}

}

Hardy Hu:

你好!

运行时间的区别,和编译器的版本有一定的关系,CCS5.4里面的编译器版本整体来说比起CCS3.3是有升级和优化的。

如果你看disassembly会发现编译出来的汇编代码都不一样。

最近要考核一些代码运行时间,无意中发现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
}

}

gzc0319:

回复 Hardy Hu:

你好,多谢回复

还有一个问题就是:

根据我们测到的时间,发现新版本对于大部分运算是时间变长的,只有那几个特殊的原来需要很多时钟周期的运算变短了,这样整体下来很难说哪个版本CCS运行时间更快。

对于一个公司来说,同样的程序就会搞出不同的运行时间,这怎么办?   

最近要考核一些代码运行时间,无意中发现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
}

}

Hardy Hu:

回复 gzc0319:

你好!

你是用的CCS3.3与CCS5.4里面的C2000 compiler的版本号能发给我吗?

最近要考核一些代码运行时间,无意中发现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
}

}

gzc0319:

回复 Hardy Hu:

你好

CCS5.4对应  TIv6.1.3

CCS3.3对应  V5.0.2,不知道是不是这个

赞(0)
未经允许不得转载:TI中文支持网 » 150M28335在不同CCS版本下RAM仿真时间不一致!!!
分享到: 更多 (0)