之前讲了很多的理论,之后会结合一些代码讲解一些优化的方法,今天刚对AVS熵解码的一部分内存访问进行优化
在熵编码和熵解码这样的底层函数因为调用次数是非常多的,有时候只要减少一个clock都会优化很多的内容
做DSP优化,和C语言优化有一些不同,除了一些常规的注意嵌套循环,减少判断语句之类的操作外,
对dsp优化必须非常注意减少内存的访问和程序运行的并行化处理
同时对于所采用的硬件也应该注意其自带的一些内联指令,这些内联指令对于一些运算是十分有用的,这个在我做DCT和IDCT优化的时候有明显的感觉,优化达到了80%以上,之后会慢慢介绍一些内联指令
我所提及的指令大部分都是针对TI 6678,对于别的型号可以作为参考用:
言归正传:
在AVS熵解码的一个函数
if (--Dbits_to_go < 0) { //<如果当前缓冲区没有数据
get_byte();//<从码流中获得一个字节的数据存入缓冲区
}
// Shift in next bit and add to value
value_t = (value_t << 1)