class Item { public String firstName; public String lastName; public int age; public SubItem [] subItems; } class SubItem { public String name; public int value; }
みたいなので、各値はランダム。Itemを1000個、subItemは0〜9個。(JsonPullParserはgetter/setterが必須なので追加、配列も使えないのでListにしてる)
シリアライズした結果はファイルに書き出して、デシリアライズはファイルからの読み込み。
Android 4.2.2 の Nexus 7(2012) で動かした結果。(10回続けて実行した中の最速値)
ライブラリ | シリアライズ | デシリアライズ |
---|---|---|
Gson 2.2.4 | 1788 | 365 |
Jackson 2.2 | 124 | 236 |
JSONIC 1.3 | 171 | 1006 |
JsonPullParser 1.4 | 1520 | 520 |
Serializable | 925 | 830 |
出力のファイルサイズ。
ファイル | サイズ |
---|---|
JSON(Jackson,Gson,JSONIC,JsonPullParser) | 440306 |
Serializable | 376967 |
やっぱりJacksonが嘘みたいな速さですな。
Nexus 5のDalvikとARTでもついでに試してみたら、ARTだと遅くなりますな...。
シリアライズ | Dalvik | ART |
---|---|---|
Gson | 1534 | 1763 |
Jackson | 80 | 189 |
JSONIC | 116 | 293 |
JsonPullParser | 1331 | 1666 |
Serializable | 748 | 1179 |
デシリアライズ | Dalvik | ART |
---|---|---|
Gson | 364 | 360 |
Jackson | 193 | 315 |
JSONIC | 691 | 891 |
JsonPullParser | 453 | 343 |
Serializable | 689 | 998 |
テーブル作ってSQLiteに入れる方法も試した。