jpegファイルの読み込みを2倍に高速化させる

Ubuntuには標準で画像ビューアや画像整理ソフトなどがインストールされる。
それぞれのソフトのjpegデコードは主にlibjpegというライブラリが担っている。
このlibjpegの高速化を図るべく、Fedoraの次期Fedora14ではlibjpegを2〜4倍高速化したlibjpeg-turboの採用を検討している。*1
libjpeg-turboは宮坂さんのIndependent JPEG Group's JPEG software release 6b with x86 SIMD extension for IJG JPEG libraryオープンソース化を受けてそれをベースに開発が始まったもの。*2
こういう動きを見ると近年のデジカメの高解像度化や低スペック端末の普及もあってこれからはUbuntuも含めてjpeg読み込み高速化の方向に行きそうだ。*3

そこで、libjpegを強引に置き換えてみる

本題だが、Ubuntuに標準搭載されているlibjpegと宮坂さんのライブラリまたはlibjpeg-turboを強引に置き換えてしまうことでシステム全体のjpeg読み込みを高速化させてみる。
宮坂さんのライブラリを導入した自分の環境では導入後もうすぐひと月経つが特にトラブルはない。
手元で2つのライブラリの読み込み速度を比べてみた*4ところ、感覚的ではあるが宮坂さんのライブラリの方が明らかにlibjpeg-turboより速かった。
また、何もしない環境と両者を比べると大体2倍ほど読み込みが速くなっているのを感じた。
しかし宮坂さんのライブラリには64bit環境でバグがあるらしいので、64bitのUbuntuの場合はlibjpeg-turboを選択するのが良いだろう。

実際に導入してみる

以下完全に自己責任*5となる。以下は一例。

1, 前述のライブラリの必要な方を用意する。いずれもコンパイル済みのパッケージがある。
2, 標準の読み込み速度を確認するため、どの画像ビューアでもいいのでデジカメなどのできるだけ高解像度なjpegファイルを表示させてみてみる。
3, 強引に置き換える。

sudo cp -i libjpeg.so.62.1.0 /usr/lib/
cd /usr/lib
sudo mv libjpeg.so libjpeg.so.default
sudo ln -s libjpeg.so.62.1.0 libjpeg.so

4, 2と同じく読み込み速度を確認してみる。




早くも明日からネタに困る。

*1:http://gihyo.jp/admin/clip/01/linux_dt/201006/15

*2:Linux界隈での日本人の活躍を見るとついうれしくなる。

*3:Firefoxにもlibjpeg-turbo導入を検討するバグが立っている。https://bugzilla.mozilla.org/show_bug.cgi?id=573948

*4:環境はlucid32bit,Athlon64X2 3800

*5:コマンドの意味が分かり、元の環境に自力で戻せるスキルが必要。