怪问题(音频解码)
我移植一个MP3的解压算法时,在PC机上用gcc编译后,执行正确且速度快.但是,我用arm-linux-gcc编译后烧到板子(EP7312)上的时候,执行程序也能正常运行,可是速度非常的慢,几乎两个小时才能完成PC上几秒钟的解码,但是最后解码后的结果是正确的.
困惑了很长时间也找不到原因.也试了对所有自己能想到的问题(当然由于我菜鸟的考虑范围也比较狭窄)修改后去试,每次都是一样的.由于解码要用到标准数学库,会不是是这个方面的原因??可是两者速度上不该有这么大的差别吧.
由于我也找不到真正的症结,所以也不知道如何明白清晰而又简捷的向各位高手提出问题,所以麻烦大家看这么多字了,还希望能给些有益的提示,在此感谢先.
问题点数:30、回复次数:7Top
1 楼ericzhangali(另一个空间)回复于 2005-04-22 09:48:29 得分 5
和库应该没什么关系吧?两小时 VS 几秒?这么夸张?目标平台什么环境?Top
2 楼Benni()回复于 2005-04-26 16:49:20 得分 5
建议你尽量不要用数学库, 因为里面的基本上都是浮点运算, 而如果你的目标CPU不含有数字协处理器的话, 结果你想想也就明白了.....
建议你尽可能修改代码, 使用整数运算代替浮点运算(无论是数学函数还是加减乘除).
祝你好运!Top
3 楼ouyangcamel()回复于 2005-04-29 14:22:29 得分 0
非常感谢二位的指教.
毫不夸张,就是"两小时 VS 几秒",我的目标平台是:linux2.4.13,cross2.95.3,ep7312;(不好意思,对目标平台的详细概念有些模糊,所以就罗列...)
不用数学库????可是见到的一些音频的解压算法好象没有不用数学库的,不用的话编译都无法通过的,我到底怎么来"用整数运算代替浮点运算(无论是数学函数还是加减乘除)"???麻烦你再说的详细些.
非常感谢二位的指教.Top
4 楼qfxx(秋风萧萧)回复于 2005-04-29 17:35:53 得分 10
对ARM不太熟
但应该和单片机类似
适合于定点运算
你直接把浮点程序考到ARM上运行当然不行
你要把浮点程序改成定点程序
然后再移植到ARM上运行
多数数学库都是针对PC开发的
效率低Top
5 楼Benni()回复于 2005-04-30 10:20:11 得分 10
坦率的讲, 我觉得跨平台移植MP3的解压算法, 而且要速度很快的话, 需要非常高的水平. 按你目前讲的情况来看, 就是因为ARM处理器在处理浮点运算消耗了大量的时间(因为结果是正确的). 你在网上找找还有没有其他的算法能够提供足够速度,或者仔细看看你的ARM CPU到底有没有浮点协处理器, 怎样使用协处理器. 否则的话,我建议你放弃吧, 因为你得使用定点数字自己重新实现MP3的解压算法,别的, 恐怕没什么好方法.
我曾经接触过一个水平很高的博士, 他在Palm(龙珠68K)上实现JPEG解码算法, 花了好几个月呢, 就是因为CPU慢, 他基本上把JPEG解码算法字节自己写了一遍. 我想, MP3的解码算法不会比JPEG解码算法简单的吧?Top
6 楼ouyangcamel()回复于 2005-04-30 10:30:37 得分 0
非常感谢二位的指点,意义重大,对于我个人来说!:)
听了二位的分析,那我就去尝试看看其他的算法,同时去看看这个芯片有没有浮点协处理器,有什么新问题后还要继续讨教各位了.
我对这个论坛不熟悉,但没有想到首次发问还是得到了大家热情的指点,再次感激,还望以后多多指教.Top
7 楼ouyangcamel()回复于 2005-04-30 10:40:49 得分 0
不好意思,我不太熟悉怎么给分,它总是提示我"所给总分不符合",但我确实加起来是30分啊,嘿嘿,不好意思,想答谢都这么难!:)Top




