Java Image Libraryの速度比較 − JDeliとImageIO/JAIの比較
私たちのJava画像ライブラリJDeliの速度をImageIOやJAIと比較してみました。JDeli、ImageIO/JAIのいずれも、過去バージョンに比べて改善されており、いくつかの興味深い知見が得られました。

私たちのJava画像ライブラリJDeliの速度をImageIOやJAIと比較してみました。JDeli、ImageIO/JAIのいずれも、過去バージョンに比べて改善されており、いくつかの興味深い知見が得られました。
注: 本記事のベンチマークは2023年2月時点のバージョンで実施されたものです。最新バージョンでは各ライブラリのパフォーマンスが改善されている可能性があります。
明らかな改善点は、HEICやGIFの読み書き、JPEG2000の書き込み、WMFやEMFの読み出しといったフォーマットの追加サポートです。しかし、フォーマットの取り扱いに関するスピードの改善も見てみたいと思っています。
速度比較テストはどのように行われたのでしょうか?
Java Microbenchmark Harnessを使用して、ImageIOとJAIに対するライブラリのパフォーマンスをテストすることで、より正確なテストができることがわかりました。
テストに使用したコードはGitHubにありますし、テストは試用版でも問題なく運用できますので、ご自身でテストを行いたい方はぜひお試しください。ぜひ、あなた自身の画像ファイルのデータセットやハードウェアでテストを実行し、結果を教えてください。
テスト方法について
JDeliとImageIO/JAIの両方でサポートされているフォーマットをテストしています。そのため、DICOM、EMF、HEIC、PSD、SGI、WebP、WMFは含めないことにしています。
HEICは現在他のライブラリがサポートしていないにもかかわらず、読み出しと書き出しの両方で分けて入れています。
速度を比較したいので、平均時間モードを採用します。これは、1回の操作の平均秒数を取るものです。これらのテストではすべて、50ファイルのディレクトリを使用して、画像をBufferedImageとしてJavaにロードすることにします。各テストについて、最良の結果を緑色でハイライトしています。
読み込み性能
| ファイルタイプ | ImageIO | ImageIO/JAI | JDeli |
|---|---|---|---|
| PNG | 0.168 ± 0.001 | 非対応 | 0.483 ± 0.001 |
| JPEG | 6.159 ± 0.013 | 非対応 | 10.464 ± 0.005 |
| GIF | 0.063 ± 0.001 | 非対応 | 0.027 ± 0.001 |
| BMP | 0.099 ± 0.001 | 非対応 | 0.026 ± 0.001 |
| TIFF | 0.014 ± 0.001 | 非対応 | 0.015 ± 0.001 |
| JPEG2000 | 非対応 | 24.855 ± 0.044 | 17.528 ± 0.032 |
| HEIC | 非対応 | 非対応 | 0.085 ± 0.001 |
書き出し性能
| ファイルタイプ | ImageIO | ImageIO/JAI | JDeli |
|---|---|---|---|
| PNG | 0.623 ± 0.006 | 非対応 | 0.216 ± 0.001 |
| JPEG | 10.600 ± 0.077 | 非対応 | 5.809 ± 0.011 |
| TIFF | 非対応 | 11.738 ± 0.050 | 6.379 ± 0.013 |
| GIF | 1.078 ± 0.004 | 非対応 | 0.027 ± 0.001 |
| HEIC | 非対応 | 非対応 | 0.297 ± 0.001 |
コード例
画像の読み込み
BufferedImage image = JDeli.read(streamOrFile);画像の書き出し
JDeli.write(myBufferedImage, OutputFormat.HEIC, outputStreamOrFile);まとめ
JDeliはImageIOの多くのバグを修正し、より多くのファイルやファイルフォーマットを扱えるようになりました。テストの際、ImageIOで例外が発生するファイルがありましたので、テストを公正に行うため、これらのファイルを削除し、両方のライブラリで処理できるファイルに置き換えることにしました。
あなたのユースケースに最適なJava画像ライブラリを選択することは重要ですが、ここでは比較可能な画像品質に対して速度のみを比較しています。ファイルサイズ、品質、サポートされているフォーマットなど、比較できる指標はたくさんあります。

開発者向けPDF入門ガイド
PDFの仕様や活用方法など、開発者に必要な情報をコンパクトにまとめました。初めてPDFを扱う開発者にも分かりやすく、基礎から応用までカバーしているため、PDFのポテンシャルを最大限に引き出し、アプリケーション開発やドキュメント管理の効率化を図るための手引きとなるでしょう。