经过优化,我的mpeg4解码程序在200MHz的2410上解352*288分辩率300k速率的码流达到了
18帧/秒。2440是400MHz的,比2410快两倍。原本设想在2440上应该能轻松的达到30帧/秒。结果却大跌眼镜。
2410(主频200MHz,内存100MHz) 2440(400MHz,内存100MHz)
无操作系统 无操作系统 linux
未优化c代码 11.5 12 8
汇编优化代码 18 23 --
可以看到两个问题:
1. CPU主频的提高对速度的影响不是很大,在运行未优化的代码时2440与2410基本没什么区别。
2. 操作系统对速度影响很大,在linux下跑速度慢很多。
分析各部分时间的开销,发现宏块的拷贝占了很大的一部分时间。这部分计算量很小,主要是读取和写入内存。难道是内存速度太慢? 于是提高内存速度试试看。
2440(主频400MHz,内存100MHz) 2440(400MHz,内存133MHz)
无操作系统 无操作系统
汇编优化代码 23 27
呵呵,效果很明显。想不到100MHz的SDRAM就不能满足400MHz CPU的数据需求了。俺1.1G Hz的毒龙 用的才133MHz的SDRAM呢。也许是2440系统结构有问题,不然我实在不明白内存速度怎么影响这么大。
现在从软硬件两方面同时入手,一是硬件上采用更快的内存,小超一记2440到500MHz就可以支持166MHz的SDRAM了。二是更改解码流程,减少内存操作。目前通过优化流程,在400M主频100MHz内存频率下解码速度达到 28帧/秒了。
posted on 2006-07-02 14:03 zgf的blog 阅读(5158)
评论(9) 编辑 收藏