Libjpeg turbo优化在安卓设备中所占的份额



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

安卓设备空间的哪一部分支持这些指令,因此使用这个库可以获得速度优势?

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

市场上绝大多数安卓设备都使用一些ARM CPU。高端手机(如HTC Sensation)倾向于使用支持NEON的ARM CPU(高通Snapdragon、OMAP4、三星Exynos、Tegra3)。较旧/功能较差的手机通常有一些ARMv6芯片组,如高通MSM72xx系列。一些好的例子是谷歌G1和最初的摩托罗拉Droid。

安卓平板电脑则略有不同。现有平板电脑设备的很大一部分基于英伟达Tegra2芯片组,该芯片组不支持NEON。基于Tegra3(华硕Transformer Prime)的较新平板电脑确实支持NEON。一些罕见的平板电脑基于高通公司的SOC(例如HTC Flyer),也支持NEON。还有一些基于MIPS的低成本平板电脑,甚至还有一些带有x86芯片。然后是相对较新的谷歌电视设备类别。在过去的一年里,这些主要是x86,但即将到来的最新一代将有许多使用ARM CPU。

对于我已经(现在仍在使用)的libjpeg-turbo端口,需要考虑以下几点:

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

Libjpeg turbo在搭载NEON的armv7上大放异彩。NEON是手臂的SIMD支撑。

Tegra,Tegra2没有NEON,但它是armv7。因此,现在可以构建libjpeg-turbo,关闭NEON支持,但仍然使用一些armv7优化。。。只是不会那么快。它仍然会比目前在android中发现的libjpeg更快。

有armv6芯片正在被放入运行安卓系统的新手机中。尤其是在更便宜的市场。与其进入一个详尽的列表,不如在lib中进行各种armv6优化(目前对我来说这是WIP类型的东西),以便在android上实现libjpeg-turbo。敬请关注。

目前所有安卓设备都使用ARM指令集。它们中的大多数(但不是全部)都支持NEON指令集。NEON指令类似于SSE2到x86。

相关内容

  • 没有找到相关文章

最新更新