概要
オブジェクトのシリアル化では、実行時にフィールドと属性を確認するのが遅い場合があります。高度なライブラリは通常、ILエミッティングまたは表現ツリーを使用してパフォーマンスを向上させますが、実行時にILを構築するには、同様のオブジェクトの情報を再利用するためにキャッシュする必要があります。これは、json.netが使用するキャッシュ戦略の問題につながります。 質問
メソッドがjson.netを使用した属性のオブジェクトをシリアル化すると、json.netはメンバーのアクセス情報をキャッシュしますか?
回答JsonConvert.SerializeObject
value
Foo
はい。 Foo
JSON.NETは、
およびのクラスでシリアル化できます。
キャッシュメカニズム
キャッシュ情報のグローバルな静的例を維持するためにIContractResolver
。 DefaultContractResolver
CamelCasePropertyNamesContractResolver
インスタンス間で共有静的テーブルを使用します。
スレッドセキュリティ
DefaultContractResolver
カスタムコントラクトパーサーCamelCasePropertyNamesContractResolver
独自の契約パーサーを作成する場合、契約パーサーインスタンス自体を再利用するときにのみキャッシュできます。 json.netは、シリアル化プロセス中のパフォーマンスを改善するために、特に大規模なデータセットを処理する場合のパフォーマンスを改善するために、タイプタイプのシリアル化された情報を効果的にキャッシュします。
以上がjson.netキャッシュシリアル化情報はパフォーマンスを向上させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。