json.netキャッシュシーケンシャル化情報パフォーマンスを改善しますか?
json.netについて、主な問題は、どのシリアル化方法を使用するか、キャッシュが使用されるかどうかです。たとえば、json.netはFOOオブジェクトメンバーのアクセス情報にアクセスし、将来シリアル化されたときに再利用しますか?
答え:はい、それは本当にキャッシュされました。
およびIContractResolver
)は、カスタム契約パーサーが定義されていない限り、この情報を維持し、内部で再利用します。 DefaultContractResolver
CamelCasePropertyNamesContractResolver
グローバルな静的インスタンスがあり、すべてのインスタンス間で共有される静的テーブルを維持します。
これら2つの契約パーサーは安全なスレッドであり、クロススレッド共有を許可します。ただし、独自の契約パーサーを作成すると、キャッシュは契約パーサーインスタンス自体をキャッシュして再利用したときにのみ発生します。 DefaultContractResolver
CamelCasePropertyNamesContractResolver
メモリ使用がない場合、
最終的には、キャッシュタイプのシリアル化情報はパフォーマンスを改善できますが、過剰なキャッシュがメモリを占有する可能性があります。契約パーサーを慎重に管理することにより、パフォーマンスとメモリ消費のバランスを達成できます。
以上がjson.netは、パフォーマンスを改善するためのシリアル化情報をキャッシュしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。