【发布时间】:2011-09-13 17:54:49
【问题描述】:
我的 Android NDK 应用程序使用 C 语言中的单个开源库。当它工作时,该库对处理器的负载太大。问题:
如何理解库的哪些组件承受的压力最大?
有什么方法可以优化吗? LOCAL_ARM_MODE: = arm 大大提升性能?
【问题讨论】:
-
你想使用什么开源库?如果你说出它的名字,我们大多可以提供更具体的信息。例如,如果它是一个视频编解码器,那么答案可能是由于大量数据和计算密集型工作,视频编码本质上需要大量 CPU 能力。
-
我使用音频库。它包括所有其他编解码器,例如库 - libflac、libmp3lame、ffmpeg ...
-
所以这个用于解码音频的库占用了大量的 CPU。如何减少CPU的消耗??
-
您能否更具体地说明您打算使用音频库做什么:编码、解码、分析或转换音频?实时(与您收听音频样本一样快)还是快几倍?您知道您提到的哪个库是瓶颈吗?通常,此类库可能需要手动优化一些核心例程(可能在汇编程序中以利用特殊的多媒体指令)。如果可能,请尝试使用内置功能。 Android 原生支持多种音频格式(至少用于播放)。
-
我只需要解码然后使用AudioTrack播放。可能解码会更快,但你可以以相同的速度。 Android 不能的优势,就是借助这些库。不知道什么库这么重,但是用Vav文件和Flac文件结果一样。必须有一些方法不用重写代码库,这对我来说很难吗??
标签: android c++ c optimization android-ndk