Ideos U8150-BでのJITの効果
HuaweiのAndroid端末U8150はQVGAで600MHzという貧弱な装備な割には、Froyo 2.2を搭載している。Froyoと言えばJITということで、0xBench*1でベンチマークを取ってみたが、Snapdragon機に比べるとどうにもJIT効果が良く分からなかった*2。
また、Armv5teのデフォルト設定はJITがオフという情報*3もあり、本当にJIT効いてるんかいな?そもそもJITがオンになってるのはどうやって調べるの?的なTweetsのやりとりが先日あった。
結果的にはU8150もJITはオンになっていることが分かった*4のだが、どれくらい効いているの?というのは分からないままだった。
京都マイクロさんがDalvikVMのJITのON/OFFに関するTips*5というエントリをあげてくださって、Safe Modeで起動すればJITがオフになることが分かったので、早速U8150のD-Pad Centerを押しっぱなしにして再起動してみた。detectSafeMode()のコードどおり途中でブルブルしてからSafe Modeで起動した。
$ adb shell logcat | grep SAFE I/WindowManager( 124): SAFE MODE ENABLED (menu=0 s=0 dpad=1 trackball=0)
早速、0xBenchを動かしたい所だが、Safe Modeでは/data/appを見てくれない。そこで、コマンドラインから
$ adb shell $ am start -a android.intent.action.MAIN -n org.zeroxlab.benchmark/.Benchmark
起動するActivity名はManifest*6をカンニングした。
JIT効果が一番高そうなLinpackの結果は以下のとおりで、JITにより1.65倍程度に高速化されていることが分かった。
JIT MFlops ON 3.78 OFF 2.29
*1:http://code.google.com/p/0xbench/
*2:http://twitter.com/#!/androidzaurus/status/29450138341
*3:http://twitter.com/#!/androidzaurus/status/29448511860
*4:http://twitter.com/#!/androidzaurus/status/29451299416
*5:http://blog.kmckk.com/archives/3076212.html
*6:http://gitorious.org/0xbench/0xbench/blobs/master/AndroidManifest.xml