因为C语言编译的程序不是最高效的汇编语言,所以不能实时播放。因此,为了加快程序执行速度,程序员可以在优化状态下实现实时回放速度。C6x的编译器提供了优化指令,比如编译时加入-o3的参数,这样就可以用软件来分析程序员的程序是否可以改进。这样,在生成组语言的汇编语言文件之前,编译器会不断编译程序员编写的C语言程序,重新排列程序的循环部分,生成另一个更高效的核心循环,从而以最高效的方式重新排列程序,加快程序运行速度。
下面 耿真seo就为在家介绍一下C语言程序编辑中快程序速度的方法
方法一、把浮点运算改成定点运算
因为C6x DSP板不支持浮点运算,我们原来的程序代码是浮点运算格式,所以必须改成定点运算,修改后的执行速度会快很多。我们可以使用Q格式规范来表示浮点运算。
Q格式的相关原理是定点DSP用固定的小数点来表示十进制数,这也造成了使用上的限制。为了对不同范围的小数点进行分类,必须使用Q格式的格式。
方法二、建立表格(table),的原程序设计中,除了读取AAC文件外,解码时还需要读取一些C语言的程序代码,做一些计算,比如读取一些数值,做sin,cos,exp运算。但是为了加快程序的执行速度,这些操作的结果都内置到表中,内置到程序中,所以不需要做额外的计算来加快程序的速度。
方法三、减短程序的长度 1、去除Debug的功能的原始程序处于调试阶段时,添加了许多部件来检测错误。程序调试后没有出现错误,可以去掉这些部分,减少程序长度,减少程序执行时的时钟脉冲数,加快程序速度。2、去除计算时脉(clock)功能 的原始程序可以计算出执行该程序所需的时钟数,我们也可以去掉这些部分。如果需要计算时钟,可以用C6x的工具软件,功能更强大。
方法四、减少I/O 过程在做解码的时候,先读取一部分AAC文件进行解码,解码后再读取下一部分。由于C6x板和PC读取文件比较慢,读取动作占用了大部分时间,所以程序改为解码前将所有AAC文件读入C6x内存。或者把AAC构建成一个表(1MB左右),避免DSP板上内存不足。
方法五、减少子程序的呼叫调用一个子程序时,他必须首先把寄存器的内容放在堆栈上,当他从子程序返回时,他还必须从堆栈中取出这些寄存器的原始内容。但是有些子程序长度短,调用次数多,往往几个时钟就能完成,却浪费时间访问栈的内容。所以这些短子程序只是简单的写在主程序里,减少时钟的数量。
方法六、写汇编语言,可以正确执行,但这种汇编语言并不是最有效的编写方式。所以,为了增加程序的效率,在某些地方,比如一些被多次调用的函数,程序代码不长,就必须用自己编写的汇编语言来代替。
方法七、利用平行处理的观念C6X是一款功能强大的处理器。它的CPU提供了八个可以执行不同指令的单元,也就是说,它可以同时处理多达八条指令。因此,如果我们能将其用于并行处理,就可以大大缩短程序执行时间,最高效地将其用于解码。