使ったコードはこちら => https://github.com/komamitsu/AndroidMsgpackBenchmark/blob/master/src/com/komamitsu/android/msgpackexample/MsgpackExampleActivity.java
ベンチの概要としては、100byte x 50000の配列、100byte(value) x 30000の辞書をJSON, MessagePackでシリアライズ・デシリアライズしてどんなもんか見てみようかと。
I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: serialize start
I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: serialize end :6421
I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: deserialize start
D/MsgpackExampleActivity ( 8963): benchmarkJsonArray: size=50000
I/MsgpackExampleActivity ( 8963): benchmarkJsonArray: deserialize end :1423
I/MsgpackExampleActivity ( 8963): benchmarkJsonMap: serialize start
I/MsgpackExampleActivity ( 8963): benchmarkJsonMap: serialize end :3282
I/MsgpackExampleActivity ( 8963): benchmarkJsonMap: deserialize start
D/MsgpackExampleActivity ( 8963): benchmarkJsonMap: size=30000
I/MsgpackExampleActivity ( 8963): benchmarkJsonMap: deserialize end :1044
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicArray: serialize start
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicArray: serialize end :14636
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicArray: deserialize start
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicArray: deserialize end :16284
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicMap: serialize start
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicMap: serialize end :19394
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicMap: deserialize start
I/MsgpackExampleActivity ( 8963): benchmarkMsgpackDynamicMap: deserialize end :17350
I/MsgpackExampleActivity (20424): benchmarkJsonArray: serialize start
I/MsgpackExampleActivity (20424): benchmarkJsonArray: serialize end :2818
I/MsgpackExampleActivity (20424): benchmarkJsonArray: deserialize start
D/MsgpackExampleActivity (20424): benchmarkJsonArray: size=50000
I/MsgpackExampleActivity (20424): benchmarkJsonArray: deserialize end :597
I/MsgpackExampleActivity (20424): benchmarkJsonMap: serialize start
I/MsgpackExampleActivity (20424): benchmarkJsonMap: serialize end :1897
I/MsgpackExampleActivity (20424): benchmarkJsonMap: deserialize start
D/MsgpackExampleActivity (20424): benchmarkJsonMap: size=30000
I/MsgpackExampleActivity (20424): benchmarkJsonMap: deserialize end :614
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicArray: serialize start
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicArray: serialize end :1121
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicArray: deserialize start
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicArray: deserialize end :6300
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicMap: serialize start
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicMap: serialize end :1117
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicMap: deserialize start
I/MsgpackExampleActivity (20424): benchmarkMsgpackDynamicMap: deserialize end :7754
眠いので結果に関しては整形して見やすくしたりしない方向で....
自分でも見づらかったので整形 (単位はmsec)。
|
|
Android2.2 |
Android4.2 |
Array S |
JSON |
6421 |
2818 |
|
Msgpack |
14636 |
1121 |
Array D |
JSON |
1423 |
597 |
|
Msgpack |
16284 |
6300 |
Map S |
JSON |
3282 |
1894 |
|
Msgpack |
19394 |
1117 |
Map D |
JSON |
1044 |
614 |
|
Msgpack |
17350 |
7754 |
あと、三回程度繰り替えしても大体同じ結果。
結果の概要:
まだあんまりMessagePackの仕様について把握して無いので、もうちょっと原理を抑えてから再度試みてみたい(そして眠りたい)。あと、別の要因がからんでいるかも、とか。