前置き
Unityでjsonをパースするときにどのパース方法が早いのか知りたかったので試してみた。
利用したライブラリ
Json.NET 8.0.3 (.NET 2.0 dll)
Unity JsonUtility
実験環境
- mac os x
- Unity 5.3.4
結果
テストに利用したコード
下記のような簡単な構造体をパースするのを複数回繰り返すだけのテスト
class SampleEntity
{
public int id;
public string name;
}
3つの手法で比較
- UnityのJsonUtility
- Json.NETのparse
- Json.NETで手動パース
参考
結果
UnityのJsonUtilityがJsonConvertに対して倍以上早い結果に。
正直意外だった。。
パースするプログラムが悪いだけかもだけど、Json.NETで手動でバース場合のパフォーマンスでも負けてる。
UnityのJsonUtilityは相当チューニングしていそうだ。
結論
JsonUtilityをつかいましょう。
追記:
パフォーマンスはよいのですが、いろいろ機能的に不足していそうでした。
特に例外処理がきちんとできておらず、間違った型の代入が会った際にエラーを吐いてくれないのがつらそうです。。。