Part Number:TMS320C5535
亲爱的TI官方:
我最近在开发TMS320C5535的产品时候,发现我的一个函数的运行占用的时间很多,大概耗时180us。而我需要将下面这个函数的耗时降低到50us以下。现阶段我已经把C语言能有优化的地方会优化遍了。现在我想把以下这个计算“相关系数”的C函数转化为.ASM的汇编函数以便提高这个地方的运行效率。所以想来请教一个TI官方是否有好的建议。
这个图片是我在编译时候出现的反汇编程序,我想知道怎么通过CCS的反汇编快速的把C函数转化为汇编来提升函数的效率。
float Corrcoef1_test(UINT16 len, INT16* pDatabufer1, INT16* pDatabufer2)
{
float xcoef = 0;
INT32 mean1 = 0, mean2 = 0, var1 = 0, var2 = 0, var12 = 0;
INT32 temp_mean1 = 0, temp_mean2 = 0;
mean1 = sum0/QR_DATA_LEN; //Mean_int(len, pDatabufer1); //31us
mean2 = Mean_int(len, pDatabufer2);
UINT16 i = 0; for(; i < len; i++) //143us
{
temp_mean1 = *(pDatabufer1+i) – mean1;
temp_mean2 = *(pDatabufer2+i) – mean2;
var12 += temp_mean1 * temp_mean2;
var1 += temp_mean1 * temp_mean1;
var2 += temp_mean2 * temp_mean2;
}
xcoef = (float)var12 / Q_rsqrt(var1 * var2); //10us
return xcoef;
}
Nancy Wang:
请问是否在ccs中开启过优化?
,
user6393475:
我这个地方的优化是off的,我一旦把这个优化等级放开后,我的代码里的算法就出现问题了,所以我一直是关闭的。
,
Nancy Wang:
user6393475 说:这个图片是我在编译时候出现的反汇编程序,我想知道怎么通过CCS的反汇编快速的把C函数转化为汇编来提升函数的效率。
只能参考反汇编中的代码。
user6393475 说:我这个地方的优化是off的
您可以针对某一个c文件进行优化,优化后不能运行调试看一下哪里出问题了。
阅读以下优化文档看一下:
https://www.ti.com.cn/cn/lit/ug/spru281g/spru281g.pdf
,
user6393475:
非常感谢!我现在已经实现了优化等级3,并且使用了Intrinsics函数,代码运行效率提升了。但是还没有达到我的目标。请问还有什么好的建议可以给到我吗
,
Nancy Wang:
其它看看能不能调整程序结构了。
一般内联函数和ccs中开启优化是常用的优化方式。
,
user6393475:
好的,那我再问一下,我开启了编译器优化等级3。那我把再把一些函数转化为汇编语言会再显著提升这个函数运行的效率吗?
,
Nancy Wang:
我认为应该不会再显著提高,本身已经针对代码中的循环做了优化。
,
Nancy Wang:
如果您没有其他问题,请点击确认答案,谢谢!
,
user6393475:
那我可以理解为,把C转化为汇编其实效率并不会得到提升对吧。编译器其实已经做了这个部分操作了对吧。