Libjpeg-turbo优化对Android设备的哪些份额受益?

9

libjpeg-turbo 项目“使用 SIMD 指令(MMX、SSE2、NEON)来加速基线 JPEG 压缩和解压缩在 x86、x86-64 和 ARM 系统上。”

那么,在 Android 设备空间中,有多少份额支持这些指令,因此使用该库将获得速度优势?

(我将在通过 NDK 访问的本地代码中解压缩JPEG。)

3个回答

11

市场上绝大多数的安卓设备都使用一些版本的ARM CPU。高端手机(如HTC Sensation)通常使用支持NEON指令集的ARM处理器(如Qualcomm Snapdragon、OMAP4、Samsung Exynos、Tegra3)。而老旧或者性能较低的手机通常搭载一些ARMv6芯片组,例如Qualcomm MSM72xx系列。一些例子包括Google G1和原始的Motorola Droid。

安卓平板则有所不同。许多现有的平板设备都基于不支持NEON指令集的nVidia Tegra2芯片组。而基于Tegra3芯片组的新款平板(如Asus Transformer Prime)则支持NEON。少部分平板基于Qualcomm的SOC(如HTC Flyer)也支持NEON。此外还有一些基于MIPS和x86芯片的廉价平板。最近出现的一种相对较新的设备类别是谷歌电视设备。过去的一年中,这些设备主要采用x86架构,但即将推出的最新一代会有很多设备采用ARM CPU。


5

对于我所做的libjpeg-turbo端口(我仍在继续工作),有以下几点需要考虑:

指令集(armv6、armv7),SIMD(带有或不带有NEON)

Libjpeg-turbo在armv7上具有NEON时表现优异。 NEON是arm的SIMD支持。

Tegra,Tegra2没有NEON,但例如它是armv7。因此,可以立即构建libjpeg-turbo并关闭NEON支持,但仍使用一些armv7优化...它只不会很快。它仍将比当前在Android中找到的libjpeg更快。

市场上正在投放配备Android系统的新手机中,出现了一些装有armv6芯片的手机,尤其是在较便宜的市场上。而不是进行详尽的列表,需要在库中发生的事情(这是我目前正在进行的工作)是将各种armv6优化加入到libjpeg-turbo中,以便在Android上为libjpeg-turbo提供全面的故事。敬请关注。


-3

目前所有的Android设备都使用ARM指令集。大部分设备(但不是全部)支持NEON指令集。NEON指令集就像x86中的SSE2指令集。


抱歉,这并不正确。有很多使用x86和mips架构的非ARM Android设备。 - Asiimwe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接