JSON.NET Cache séquentialisation des informations pour améliorer les performances?
À propos de JSON.net, la question principale est de savoir quelle méthode de sérialisation qu'il utilise et si le cache est utilisé. Par exemple, JSON.NET accédera-t-il aux informations des membres du cache d'objet FOO et réutilisera-t-il lorsqu'il est sérialisé à l'avenir?
Réponse: Oui, il a vraiment mis en cache.
pour mettre en cache des informations sérialisées. L'analyseur de contrat par défaut (IContractResolver
et DefaultContractResolver
) maintient ces informations et les réutilise en interne, sauf si l'analyseur du contrat personnalisé est défini. CamelCasePropertyNamesContractResolver
maintient le tableau statique partagé entre toutes les instances. DefaultContractResolver
CamelCasePropertyNamesContractResolver
Ces deux analyseurs contractuels sont des fils sûrs et permettent un partage transversal. Cependant, si vous créez votre propre analyseur de contrat, le cache ne peut se produire que lors de la mise en cache et réutilisez l'instance de analyseur de contrat lui-même.
En l'absence d'utilisation de la mémoire, vous pouvez créer une instance locale de
pour réduire le contrat de cache, l'utiliser pour sérialiser et supprimer la référence immédiatement après la sérialisation.
DefaultContractResolver
En fin de compte, les informations de sérialisation de type de cache peuvent améliorer les performances, mais le cache excessif peut occuper la mémoire. En gérant soigneusement l'analyseur de contrat, un équilibre entre les performances et la consommation de mémoire peut être atteint.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!