2012-01-30 13 views
9

libjpeg-turboプロジェクトでは、SIMD命令(MMX、SSE2、NEON)を使用して、x86、x86-64、およびARMシステムでのベースラインJPEG圧縮および圧縮解除を高速化します。Libjpeg-turboの最適化のメリットは何ですか?

Androidデバイススペースのどのようなシェアは、これらの手順をサポートしていますか?したがって、このライブラリを使用することでスピードが得られますか?

(私はNDKを介してアクセスネイティブコードでJPEGファイルを解凍します。)

答えて

11

市場で使用されているAndroidデバイスの大部分は、ARM CPUの味を使用しています。ハイエンドの携帯電話(HTCセンセーションなど)では、NEON(クアルコムのSnapdragon、OMAP4、Samsung Exynos、Tegra3)をサポートするARM CPUを使用する傾向があります。旧式/低機能携帯電話には、通常、Qualcomm MSM72xxシリーズなどのARMv6チップセットが搭載されています。 Google G1と元のMotorola Droidが良い例です。

Androidタブレットは、わずかに異なる話です。既存のタブレットデバイスの大部分は、NEONをサポートしていないnVidia Tegra2チップセットに基づいています。 Tegra3(Asus Transformer Prime)に基づくより新しいタブレットには、NEONのサポートが含まれています。いくつかの希少なタブレットは、クアルコムのSOC(HTC Flyerなど)に基づいており、NEONもサポートしています。 MIPSをベースにしたいくつかの低コストタブレット、さらにはx86チップを搭載したタブレットもあります。次に、比較的新しいカテゴリのGoogle-TVデバイスがあります。過去1年間、これらは主にx86でしたが、近頃にリリースされる最新世代にはARM CPUを使用するものが多数あります。そこに私がやったのlibjpeg-turboがポートの

-3

現在、すべてのAndroidデバイスは、ARM命令セットを使用しています。そしてそれらの大半(ただしすべてではない)はNEON命令セットをサポートしています。 NEON命令は、SSE2からx86への手順に似ています。

+0

申し訳ありません申し訳ありませんが、これは真実ではありません。x86およびmipsアーキテクチャを使用しているアームアンドロイドデバイスはまったくありません –

5

(まだに取り組んでいます)を検討するには、次のもの:

命令セット(ARMv6の、のARMv7)、SIMD(とやNEONなし)

Libjpeg-turboはNEONでarmv7に本当に輝いています。 NEONはアームのSIMDサポートです。

Tegra、Tegra2にはNEONはありませんが、たとえばarmv7です。だから、libjpeg-turboはすぐにNEONサポートをオフにすることができますが、まだいくつかのarmv7の最適化を使用することができます...それは速くはありません。まだアンドロイドで見つかっているlibjpegよりも高速です。

Android搭載の新しい携帯電話に搭載されているarmv6チップがあります。特に安い市場の場合。むしろ、徹底的なリストに入ると、libで何が起こる必要があるのですか(これは現在私のWIPタイプのものです)。libjpeg-turboにはさまざまなarmv6の最適化が行われていますので、アンドロイドのlibjpeg-turboに関する素晴らしいストーリーがあります。乞うご期待。

関連する問題