9 Stimmen

Welcher Anteil von Android-Geräten profitiert von den Optimierungen von Libjpeg-turbo?

Das libjpeg-turbo Projekt "verwendet SIMD Anweisungen (MMX, SSE2, NEON), um die Basis-JPEG-Komprimierung und -Dekomprimierung auf x86, x86-64 und ARM-Systemen zu beschleunigen".

Welcher Anteil des Android-Gerätebereichs unterstützt diese Anweisungen und würde daher von der Verwendung dieser Bibliothek profitieren?

(Ich werde JPEGS in nativem Code über NDK dekomprimieren.)

11voto

BitBank Punkte 8192

Die überwiegende Mehrheit der Android-Geräte auf dem Markt verwendet einige Varianten von ARM-CPU. Hochwertige Telefone (z.B. HTC Sensation) neigen dazu, ARM-CPUs zu verwenden, die NEON unterstützen (Qualcomm Snapdragon, OMAP4, Samsung Exynos, Tegra3). Ältere/weniger leistungsfähige Telefone haben in der Regel einen ARMv6-Chipsatz wie den Qualcomm MSM72xx-Serie. Einige gute Beispiele sind das Google G1 und das Original Motorola Droid.

Android-Tablets sind eine etwas andere Geschichte. Ein großer Prozentsatz der vorhandenen Tablet-Geräte basiert auf dem nVidia Tegra2-Chipsatz, der keine NEON-Unterstützung enthält. Neuere Tablets basierend auf Tegra3 (Asus Transformer Prime) bieten Unterstützung für NEON. Einige seltene Tablets basieren auf Qualcomms SoC (z.B. HTC Flyer) und unterstützen ebenfalls NEON. Es gibt auch einige günstige Tablets basierend auf MIPS und sogar einige mit x86-Chips. Dann gibt es die relativ neue Kategorie von Google-TV-Geräten. Im vergangenen Jahr waren diese hauptsächlich x86, aber die nächste Generation, die bald erscheinen wird, wird viele haben, die ARM-CPUs verwenden.

5voto

Tom Gall Punkte 141

Für den von mir durchgeführten (und immer noch laufenden) libjpeg-turbo-Port gibt es folgende Dinge zu beachten:

Befehlssatz (armv6, armv7), SIMD (mit oder ohne NEON)

Libjpeg-turbo glänzt wirklich auf armv7 mit NEON. NEON ist arms SIMD-Unterstützung.

Tegra, Tegra2 hat kein NEON, ist aber z. B. armv7. Daher kann libjpeg-turbo derzeit erstellt werden, indem die NEON-Unterstützung deaktiviert wird, aber trotzdem einige der armv7-Optimierungen verwendet werden... es wird einfach nicht so schnell sein. Es wird immer noch schneller sein als das libjpeg, das derzeit in Android zu finden ist.

Es gibt armv6-Chips, die in neuen Android-Telefonen verwendet werden. Insbesondere für die günstigeren Märkte. Anstatt eine erschöpfende Liste zu erstellen, müssen in der Bibliothek verschiedene Armv6-Optimierungen in libjpeg-turbo integriert werden, damit es eine rundum gute Lösung für libjpeg-turbo auf Android gibt. Bleiben Sie dran.

-3voto

Mārtiņš Možeiko Punkte 12597

Derzeit verwenden alle Android-Geräte den ARM-Befehlssatz. Und die meisten von ihnen (aber nicht alle) unterstützen den NEON-Befehlssatz. NEON-Anweisungen sind ähnlich wie SSE2 bei x86.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X