Home > android > AndroidのFile I/Oベンチマーク

AndroidのFile I/Oベンチマーク

すこし前の話ですが、第6回 Google デベロッパー交流会豆蔵の豆ナイトに行ってきました。いずれもAndroid開発者のために無料で開催され、とても勉強になりました。
これを契機に、Android SDKについて日本語で議論ができるAndroid-SDK-JapanというGoogleグループが立ち上がったり、Androidの勉強会が立ち上がったりと、にわかに日本でのAndroidの活動が盛り上がってきたように感じます。

かってにHackathon


第6回 Google デベロッパー交流会の翌日に、Android開発経験者のためのHackathonが開催されました。私にもお声を掛けていただいたのですが、所用により参加出来ませんでした。
後にこのHackathonに参加された方に内容を伺うと、数グループに別れてアプリケーションを作ったとのこと。
そこで、Androidのベンチマークソフトを作るというグループがあり、とても面白そうだったので、私も作ってみました。self hackathon.

ベンチマークテスト

作った(作る)アプリは以下のベンチマークを行うようです。

  • Floating-point
  • Network
  • OpenGL
  • SQLite
  • 2DのUIエレメント

既に、Floating-pointの部分は出来ているようです。

Floating-pointベンチマーク結果

さっそく試させて頂きました。
私のベンチマーク環境は以下の通りです。

さっそくベンチマークを走らせてみました。

これがどれぐらいのレベルなのかは不明ですが、ハードやエミュレータの性能を測定するのに良さそうですね。

DroidBench

私は上記のテストと重複しないようにFile I/Oのベンチマークを作りました。
SQLiteが若干被っているようにも思いますが、よりプリミティブな計測を目的として作りました。

画像では、「Float」「Net」「GLEL」「UI」「SQL」「Drive」というタブが見えますが、実装しているのは「Drive」だけです。各タブの内容はActivityで実装出来ますので、他のベンチマークソフトを簡単に統合出来るようにしています。他のベンチマークを1つのアプリとして統合ベンチマークが出来れば便利かなぁと思って作ってみました。

File I/Oベンチマーク

File I/Oはもちろん、ベンチマークテストというソフトを作った事がありませんでした。
どうすれば良いか分からなかったので、移植出来そうなプログラムを探したのですが、イイのが見つからなかったので、自分なりに実装してみました。

Sequential File I/O

アプリの「Start」ボタンをタップすると、ベンチマークが開始します。
少し時間が掛かりますが、連続・ランダムファイル入出力の実行時間を計測します。
最後はおまけですが、ファイル削除時間も出力しています。
連続ファイル入出力は、1MBのファイルを入出力する時間を計測します。
7回繰り返し、一番大きい値と小さい値を除外した5回分のデータの平均値を出力しています。

Random File I/O

ランダムファイル入出力はファイルシステムとして隔離した場所に、64KBのファイルを16個(合計1MB)入出力する時間を計測します。
具体的には、/tmpディレクトリ内とアプリケーションデータ領域に順番にファイルを入出力します。
それを、7回繰り返し、一番大きい値と小さい値を除外した5回分のデータの平均値を出力しています。

Source Code

いつものようにeclipseプロジェクトを公開しますので、自由にご利用下さい。
android_benchmark.zip
android_benchmark0.2.1.zip(バグ修正しました @2008.05.07)

おわりに

統合ベンチマークソフト「DroidBench」に各種ベンチマークテストソフトを統合してもらえると嬉しいです。

移植方法


Activityをそのまま簡単に移植可能です。
File I/Oベンチマークですと、Drive.javaがActivityになっております。UIはdrive.xmlで定義しています。
その他のベンチマークは「Float.java」「Net.java」「GLEL.java」「UI.java」「SQL.java」がそれぞれActivityになっていますので、これらにコピーしていただく事で簡単に移植出来ると思います。

関連のありそうなエントリ

Comments:6

MichaeL 08-05-02 (金) 12:34

おお、さすがですね。
GW明けにソースアップしておきます。
まあでもLinpackのページ見ればすぐ移植できると思うけどw

MichaeL 08-05-02 (金) 13:26

Google Codeでdroidbenchのプロジェクトを立ち上げてみました。
http://code.google.com/p/droidbench/

MichaeL 08-05-02 (金) 14:07

GW明けと書きましたが、環境が見つかったのでアップしておきました。
http://code.google.com/p/droidbench/downloads/list

androidzaurus 08-05-03 (土) 11:29

3D benchを早く作れっぅ督促ですね、よくわかります。ぐはっ。

値の取得はKubeのスレッド前後で時間を計るだけなので、簡単だったのですが、結果表示ができてない。Viewが自力で全画面描画なので、Widget追加方法がわからない。setTitle使用したらスレ違いの例外違反で怒られた。OpenGLで字を書くAPIがわからない。ぐはっ。

実機だと/tmpはRAM上、appディレクトリはflashですねー。Zaurus C3000だと、appは外部SDか内蔵HDDのどちらかになりますー。エミュレータだと両方RAMですねー。

MichaeL 08-05-07 (水) 16:20

Armadillo-500で20回計測した平均値です。
※ファイルシステムはext3
[Write]
Sequence: 78.93
Random: 52.28
[Read]
Sequence: 65.73
Random: 24.09
[Delete]
Delete: 7470.35

最大値
[Write]
Sequence: 207.4
Random: 161.2
[Read]
Sequence: 571.0
Random: 43.4
[Delete]
Delete: 9541.0

最小値
[Write]
Sequence: 96.0
Random: 212.5
[Read]
Sequence: 33.6
Random: 14.285714
[Delete]
Delete: 209.0

Deleteにかなりバラつきがあるのはファイルシステムがext3だから?

ちなみにWindowsXP、Core2Duo2.66GHz、RAM2GBでのEmuratorだと
※数回計測したなかのひとつ
[Write]
Sequence: 206.8
Random: 230.92857
[Read]
Sequence: 33.4
Random: 14.0
[Delete]
Delete: 176

Deleteに大差で負けてるのが気になるなあ

adamrocker 08-05-07 (水) 20:41

>androidzaurusさん
いえいえ。空いた時間でちょっとずつ作ってく出さい。
最終的に統合する部分って必要かなぁと思って作っただけです。

>MichaeLさん
おぉ!凄い量のベンチマークですね。
しかも、Driveのベンチマークがバグってました(汗
修正してアップし直しますスミマセン。
とりあえず私のiMacでもDriveのベンチマークとってみました。
[Write]
Sequence: 110
Random: 290
[Read]
Sequence: 45
Random: 20
[Delete]
Delete: 260

Deleteにバラつきは殆どありませんでした。
2GHzのCoreDuoなのでC2DのXPからしても妥当な値のような気がしますね。

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:0

Trackback URL for this entry
http://www.adamrocker.com/blog/205/android_file_io_benchmark.html/trackback/
Listed below are links to weblogs that reference
AndroidのFile I/Oベンチマーク from throw Life

Home > android > AndroidのFile I/Oベンチマーク

Search
Feeds
Meta

Return to page top