9

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

什么样的 Android 设备空间份额支持这些指令,因此可以从使用这个库中获得速度优势?

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

4

3 回答 3

11

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

Android 平板电脑的情况略有不同。大部分现有平板设备都基于不支持 NEON 的 nVidia Tegra2 芯片组。基于 Tegra3 (Asus Transformer Prime) 的较新平板电脑确实包含对 NEON 的支持。少数少见的平板电脑基于高通的 SOC(例如 HTC Flyer),也支持 NEON。还有一些基于 MIPS 的低成本平板电脑,甚至有些采用 x86 芯片。然后是相对较新的 Google-TV 设备类别。在过去的一年中,这些主要是 x86,但即将推出的最新一代将有许多使用 ARM CPU。

于 2012-01-30T17:24:50.477 回答
5

对于我做过(并且仍在研究)的 libjpeg-turbo 端口,需要考虑以下事项:

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

Libjpeg-turbo 真的在带有 NEON 的 armv7 上大放异彩。NEON 是 arm 的 SIMD 支持。

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

有 armv6 芯片被安装到运行 Android 的新手机中。特别是对于更便宜的市场。与其进入一个详尽的列表,不如在 lib 中发生的事情(这对我来说目前是 WIP 类型的东西)是在 libjpeg-turbo 中进行各种 armv6 优化,因此对于 android 上的 libjpeg-turbo 有一个全面的好故事。敬请关注。

于 2012-05-01T17:26:28.477 回答
-3

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

于 2012-01-30T16:31:35.160 回答