Какая доля устройств Android выигрывает от оптимизации Libjpeg-turbo? - PullRequest
9 голосов
/ 30 января 2012

В проекте libjpeg-turbo"используются инструкции SIMD (MMX, SSE2, NEON) для ускорения базового сжатия и распаковки JPEG в системах x86, x86-64 и ARM".

Какая доля пространства устройства Android поддерживает эти инструкции и, следовательно, получит выигрыш в скорости от использования этой библиотеки?

(Я буду распаковывать jpegs в собственном коде, доступном через NDK.)

Ответы [ 3 ]

11 голосов
/ 30 января 2012

Подавляющее большинство Android-устройств на рынке используют некоторые разновидности процессора ARM.Высококачественные телефоны (например, HTC Sensation), как правило, используют процессоры ARM, которые поддерживают NEON (Qualcomm Snapdragon, OMAP4, Samsung Exynos, Tegra3).У более старых / менее способных телефонов обычно есть набор микросхем ARMv6, например, серия Qualcomm MSM72xx.Несколько хороших примеров - Google G1 и оригинальный Motorola Droid.

Планшеты Android - это немного другая история.Большая часть существующих планшетных устройств основана на чипсете nVidia Tegra2, который не поддерживает NEON.Более новые планшеты на базе Tegra3 (Asus Transformer Prime) действительно поддерживают NEON.Несколько редких планшетов основаны на SOC Qualcomm (например, HTC Flyer) и также поддерживают NEON.Есть также несколько недорогих планшетов на базе MIPS и даже некоторые с чипами x86.Тогда есть относительно новая категория устройств Google-TV.В прошлом году это были в основном x86, но в последнем поколении появятся многие, использующие процессоры ARM.

5 голосов
/ 01 мая 2012

для порта libjpeg-turbo, который я сделал (и все еще работаю), необходимо учесть следующее:

набор инструкций (armv6, armv7), SIMD (с NEON или без NEON)

Libjpeg-turbo действительно сияет на armv7 с NEON.NEON - это поддержка SIMD.

Tegra, Tegra2 не имеет NEON, но это, например, armv7.Таким образом, libjpeg-turbo можно собрать прямо сейчас, отключив поддержку NEON, но при этом использовать некоторые оптимизации armv7 ... это будет не так быстро.Он по-прежнему будет быстрее, чем libjpeg, который в настоящее время находится в Android.

Существуют чипы armv6, которые устанавливаются в новые телефоны под управлением Android.Особенно для более дешевых рынков.Вместо того, чтобы попасть в исчерпывающий список, то, что должно произойти в lib (и это для меня сейчас тип WIP), это получение различных оптимизаций armv6 в libjpeg-turbo, так что есть хорошая история для libjpeg-turbo на android.Оставайтесь с нами.

0 голосов
/ 30 января 2012

В настоящее время все устройства Android используют набор инструкций ARM.И большинство из них (но не все) поддерживают набор инструкций NEON.Инструкции NEON похожи на SSE2 на x86.

...