ご覧のパフォーマンスの違いは、ハードウェア アクセラレーションの有無にかかわらず、JAI を実行したことが原因だと思います。ハードウェア アクセラレーションを取得するには、次のことを行う必要があります。
- または JAI を JRE にインストールします (その後、適切な JAR/DLL/SO ファイルが JRE にコピーされ、任意の Java アプリケーションで使用できるようになります)。
- または、Java アプリケーションに JAR/DLL/SO ファイルを提供します。この場合、インストールは不要です。
2 番目のオプションを実装するには、次のことを行う必要があります。
- アプリケーションにインクルード
jai_codec-1.1.3.jar
jai_core-1.1.3.jar
mlibwrapper_jai.jar
し、それらをクラスパスに追加します
libmlib_jai.so
mlib_jai.dll
mlib_jai_mmx.dll
mlib_jai_util.dll
アプリケーションの作業フォルダに置く
Lynux で実行する場合は、LD_LIBRARY_PATH
SO ファイルの場所を Java に伝えるために、おそらく作業ディレクトリを拡張する必要があります。
#!/bin/bash
ROOT=`dirname $0`
cd $ROOT
# allow JINI to load libraries from working directory
# (e.g. libmlib_jai.so - JAI hardware acceleration library)
export LD_LIBRARY_PATH=$ROOT:$LD_LIBRARY_PATH
例:
アプリケーションの構造は次のようになります。
YourApplication
lib
jai_codec-1.1.3.jar
jai_core-1.1.3.jar
mlibwrapper_jai.jar
...
libmlib_jai.so
mlib_jai.dll
mlib_jai_mmx.dll
mlib_jai_util.dll
...
run.cmd
run.sh
...
したがって、JAR は CLASSPATH に含まれ、SO/DLL は作業フォルダー (run.cmd/.sh
実行される場所) にあります。