2016-08-12 5 views
0

は、私はそれよりも長く数百ミリ秒(私は、このメソッドを呼び出す最初の時間は、それが本当に遅いということに気づくNewtonsoft.json初期JsonConvert.DeserializeObject

Users.UserDataDict response = JsonConvert.DeserializeObject<Users.UserDataDict>(teststring); 

をデシリアライズしていJSONの本当に大きな塊を持っています必要があります)。だから私がやっていることは、ユーザーがアプリとやりとりしているときにアプリが遅くないように、大きなダミーデータをアプリが起動するときに呼び出すことです。とにかく、私はちょうどそれを正しく初期化することができますか、それともバッファサイズを増やすこともできます。

+0

大きなJSONデータを扱うときのパフォーマンスを向上させる方法のヒントをいくつか紹介します。http://www.newtonsoft.com/json/help/html/performance.htm – Tarzan

+0

初めて逆シリアル化するときに、必要なDLLが読み込まれることがあります;さまざまなメソッドがJITできます。型の初期化子が呼び出される可能性があります。 Json.NETは[here](https://stackoverflow.com/questions/33557737)に記載されているように契約情報を生成してキャッシュします。シリアライザを "ウォームアップ"するには、大容量のダミーデータをデシリアライズする必要はありませんが、各タイプをデシリアライズするための契約を生成するだけで済みます。 – dbc

+0

サービスを使用しているAPIを制御できる場合は、データを改ページしてスループットを向上させることができます。データはページあたり20項目のページになります。最初の20項目を取得してユーザに表示し、残りの項目をロードして最初のリストに追加することができます。 – devTimmy

答えて

1

JsonConvertは、それぞれのタイプをデシリアライズ/シリアライズするように見えます。それに基づいて、JsonConvert.SerializeObject/JsonConvert.DeserializeObjectへの最初の呼び出しには「長くかかる」ことがあります。より詳細な答えはhereです。

+0

ありがとう:-)それが私の結論でした。 – LampShade