今回は Mysaifu JVM に鬼車 for Java を組み込んで高速化します。
まずは以下の手順で鬼車 for Java を組み込んだランタイムライブラリを作成します。
- onig4j-v003.zip をダウンロードして任意のフォルダに展開する。
以降は「C:\mysaifu」を使用します。
- onig4j-java.util.regex-impl.zip をダウンロードして「C:\mysaifu」に展開する。
- onig-5.9.1.1-extended-wince.zip をダウンロードして「C:\mysaifu」に展開する。
- Windows Mobile にインストールされている Mysaifu JVM のランタイムライブラリ(rt.jar)を PC 上の「C:\mysaifu」にコピーする。
- コマンドプロンプトを起動して「C:\mysaifu」に移動する。
- バッチファイル「rt-onig4j.jar.bat」に引数「rt.jar」、「onig4j.jar」、「onig4j-java.util.regex-impl.jar」を指定して実行する。
C:\mysaifu>rt-onig4j.jar.bat rt.jar onig4j-java.util.regex-impl.jar onig4j.jar
※バッチファイルの実行には JDK のインストールと JAVA_HOME 環境変数の設定が必要です。
バッチファイルの実行が完了すると鬼車 for Java が組み込まれたランタイムライブラリ「rt-onig4j.jar」が「C:\mysaifu」以下に作成されているはずです。
次に作成したランタイムライブラリ「rt-onig4j.jar」を Mysaifu JVM にインストールします。
- 作成したランタイムライブラリ「rt-onig4j.jar」 を Windows Mobile に転送する。
Mysaifu JVM をデバイスにインストールしている場合は「\Program Files\Mysaifu JVM\jre\lib」以下にコピーします。
- 鬼車(OnigSyntaxJava 改良版) for Windows CE (ARMV4)「onig.dll」と鬼車 JNI ライブラリ「onig4j.dll」を Windows Mobile に転送する。
Mysaifu JVM をデバイスにインストールしている場合は「\Program Files\Mysaifu JVM\jre\bin」以下にコピーします。
以上で鬼車 for Java の組み込みが完了しました。
では、実際に鬼車 for Java 組み込み版ランタイムライブラリを使用してベンチマークを実行してみます。
鬼車 for Java 組み込み版ランタイムライブラリを使用する際は以下のように「Bootclasspath」を変更する必要があります。

ベンチマークの実行結果は以下の通りです。

鬼車 for Java を直接使用するよりも多少遅くなりますが、標準のランタイムライブラリ版よりも15倍程度高速化されました
しかし、ここで「正規表現を使ってないなら標準のランタイムライブラリで良くね?」と思うかもしれません。
が、以下のクラスが java.util.regex.Pattern を内部的に使用しています。
- java.lang.String
- replaceFirst()
- replaceAll()
- split()
- java.net.URI
- java.text.SimpleDateFormat
- java.util.jar.JarFile
- gnu.xml.validation.datatype.LanguageType
- gnu.xml.validation.datatype.TypeBuilder
更に以下のクラスが String#split() を内部的に使用しています。
- java.lang.System
- java.text.DateFormatSymbols
- getStringArray()
- getZoneStrings()
- javax.management.MBeanPermission
- javax.management.MBeanServerPermission
- implies()
- add()
- checkName()
- javax.management.ObjectName
- gnu.classpath.jdwp.Jdwp
- gnu.classpath.jdwp.processor.VirtualMachineCommandSet
- gnu.classpath.jdwp.transport.SocketTransport
- gnu.javax.security.auth.login.ConfigFileParser
- gnu.classpath.tools.getopt.OptionGroup
- gnu.classpath.tools.getopt.Parser
- gnu.classpath.tools.jarsigner.JarVerifier
- gnu.classpath.tools.javah.CniPrintStream
「Mysaifu JVM は遅い」と感じているなら鬼車 for Java 組み込み版ランタイムライブラリを使用すると劇的に効果があるかもしれませんよ
最近のコメント