トップページ | 過去記事(月別カテゴリー別) | 掲示板 | 野良DEB,RPM | 更新チェック | Twitter
<<  2011.1  >>
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
 
リンク
その他
  • RSS2.0
  • Credit

  • SEO
    loading

    プライバシーポリシー
    Google

カテゴリー » Linux » Ubuntu January 23, 2011

Ubuntuにlibjpeg-turboを入れて、JPEG画像の読み込み・変換を高速化 Ubuntu

JPEG画像を処理するlibjpegを改造したlibjpeg-turboというライブラリがあります。宮坂賢さん制作のlibjpeg with SIMD拡張が派生したもので、とっても高速に動作するそうです。Fedoraは既にlibjpeg-turboを採用。いずれはUbuntuもlibjpeg-turboに置き換わると思います。でも、待ってられないので自分でインストールしてみよう、というのが今回のネタです。

公式サイトにdebがありますが、自分でパッケージを作ってみました。libjpeg-turbo を優先する設定を自動で行うようにしています。それと、ヘッダファイルやjpegtran等のプログラムを収録していません。
パッケージリポジトリ

インストール後、下のコマンドでlibjpeg-turboが使われているかどうか確認。
$ ldd /usr/lib/libcupsimage.so.* | grep jpeg
libjpeg.so.62 => /opt/libjpeg-turbo/lib/libjpeg.so.62
私のパッケージをインストールするとシステム全体でlibjpeg-turboが使われます。Fedoraで安全性は折り紙付き(?)だし大丈夫と思いますが、色々なソフトが動かなくなる可能性があるので注意! 何かあったらアンインストールしてくださいませ。もしくは、特定のプログラムだけ有効化するのもいいですね。やり方は「LD_LIBRARY_PATH」で適当に検索してください。

沢山のJPEGをImageMagickで拡大するのに掛かる時間を比較してみます。
libjpeg:
$ export LD_LIBRARY_PATH=/usr/lib:/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu 
$ time (for f in *.jpg; do convert -geometry 200% "$f" /dev/shm/$$; done) 
→ real 0m45.792s

libjpeg-turbo:
$ unset LD_LIBRARY_PATH
$ time (for f in *.jpg; do convert -geometry 200% "$f" /dev/shm/$$; done) 
→ real 0m34.791s
かなり違いますね。気に入った。とはいえ、Webブラウザや画像表示ソフトの読み込みは、イマイチ体感的な違いが感じられなかったりして。たぶん速くなっているのだろう。そうに違いない(-_-;)

ああ、でも、GIMPで10MBのJPEGファイルを読み込む時間を計ってみたら
 libjpeg: 10秒ぐらい
 libjpeg-turbo: 7秒ぐらい
ってな感じの差が出ました。パソコンのCPUはAthlon64X2 3800+です。

≪追記≫
UbuntuのFirefoxは、libjpegを静的リンクしている(中に組み込んでいる)っぽい。再ビルドしないとlibjpeg-turboの恩恵を受けられないと思う。よく分からんけど。

≪追記≫
Ubuntu 11.10から公式リポジトリにパッケージがあります。

≪追記≫
Ubuntu 12.04からlibjpeg-turboが標準装備されるようになりました。

≪参考サイト≫
Debian - libjpeg-turbo - PIB
libjpeg-turboでjpegの変換が速くなる - かみぽのメモ
jpegファイルの読み込みを2倍に高速化させる-ネタノメモ
01:53 pm | コメントする |

上の記事に対するコメント

1. Suzuki  2011/04/20 05:16
初めまして、Suzukiと申します。
Ubuntu-11.04 beta2 に libjpeg-turbo をインストールしましたが、
うまく動作しません。
解決のためにお力添えを頂けましたら幸いです。

【作業の経過】
$ sudo add-apt-repository ppa:ikoinoba/ppa
$ sudo apt-get update
$ sudo apt-get install libjpeg-turbo
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
libjpeg-turbo
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 186 個。
188 kB のアーカイブを取得する必要があります。
この操作後に追加で 766 kB のディスク容量が消費されます。
取得:1 http://ppa.launchpad.net/ikoinoba/ppa/ubuntu/ natty/main libjpeg-turbo i386 1.1.0-0~ppa3 [188 kB]
188 kB を 2秒 で取得しました (86.9 kB/s)
未選択パッケージ libjpeg-turbo を選択しています。
(データベースを読み込んでいます ... 現在 129884 個のファイルとディレクトリがインストールされています。)
(.../libjpeg-turbo_1.1.0-0~ppa3_i386.deb から) libjpeg-turbo を展開しています...
libjpeg-turbo (1.1.0-0~ppa3) を設定しています ...
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

$ ldd /usr/lib/libcupsimage.so.* | grep jpeg
libjpeg.so.62 => /usr/lib/i386-linux-gnu/libjpeg.so.62 (0x003ec000)

2. Owner CommentSawa  2011/04/20 19:12
ご報告ありがとうございます。
11.04のパッケージは「とりあえず作った」状態でして、まだ動作確認していません。
今日か明日に試してみます。

3. Owner CommentSawa  2011/04/21 23:52
修正しました。もしアップデートで直らなかったら、一度 sudo ldconfig してライブラリのキャッシュを更新してください。

11.04からライブラリ置き場として /usr/lib/i386-linux-gnu/ が追加されました。その設定が libjpeg-turbo の設定を上書きしちゃってたようです。

4. Suzuki  2011/04/22 07:21
Sawaさん、素早いご対応をお取り下さいまして有難うございます。
早速、新バージョンのlibjpeg-turboを導入しました。
結果は極めて良好です。

【 パフォーマンスの評価 】
CPU : Athlon II X2
言語 : Python + Image Library
処理内容 : JPEGファイルからサムネイルを作成する、バッチ処理
所要時間 :
libjpeg62 5.6秒
libjpeg-turbo 2.6秒

【 感想 】
なんとも素晴らしい成果ではないですか。
Libjpeg-turboがUbuntuで標準採用されないのは残念ですが、Sawaさんのパッケージが有れば問題なしですね。
勝手な希望で大変恐縮ですが、Ubuntu-11.10以降もSawaさんのサポートを期待しています。
まずは御礼まで。

5. NONAME  2011/04/23 14:53
pixivの画像処理にlibjpeg-turboが使われているらしいですね。

コメントをどうぞ。名前とURLはオプションです。

Comment Form
NAME:
URL:
文字色:  

累計:1801978、今日:2980、昨日:1475
Created in 0.0115 sec.