Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

CoqBlog

.NET is good :-)
{ Blog de coq }

Actualités

XmlSerializer : lenteur de la première initialisation et comment y remédier

A la première initialisation d'une instance de XmlSerializer pour un type, le constructeur déclenche la génération, compilation et le chargement d'un assembly (temporaire) contenant le code de sérialisation/désérialisation dont XmlSerializer a besoin. Cette génération rend bien évidemment la première initilisation (beaucoup) plus longue.
Cette action n'est effectuée qu'une seule fois par execution de l'application (ou du moins une seule fois par domaine d'application) car il y a une gestion de cache pour les assemblys ainsi générés.

Vous pouvez cependant palier à ce "problème" en utilisant l'outil sgen (XML Serializer Generator) : il vous permet de générer l'assembly contenant déjà le code nécessaire au fonctionnement du sérialiseur pour les types d'un assembly, et ainsi économiser les phases de génération et compilation.

Pour approfondir : j'en parler plus haut d'une mise en cache, hors ce n'est pas le cas pour tous les constructeurs de la classe XmlSerializer : il semble que ce ne soit le cas que pour le constructeur XmlSerializer (Type, String) ainsi que XmlSerializer (Type) qui repose sur ce dernier.
Un post de Tess sur le sujet est assez interessant a garder en tête au moment de manipuler XmlSerializer, ou un type l'utilisant : .NET Memory Leak: XmlSerializing your way to a Memory Leak

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: dimanche 25 février 2007 00:34 par coq
Classé sous : , , ,

Commentaires

iso8859 a dit :

C'est assez connu comme pb. Les generics .NET 2.0 répondent assez bien à la problématique.

Voir ma classe XMLSerialize

<T> http://www.codyx.org/snippet_serialisation-deserialisation-objet-vers-xml_2.aspx#109

Rémi

# février 25, 2007 09:52

coq a dit :

Il n'empêche qu'il y a quand même la première initialisation pour le type au premier accès au membre static, et donc cette fameuse phase de génération/compilation.

On retombe dans la même problématique, et Sgen pourra t'apporter un plus :-)

# février 25, 2007 10:26

neodante a dit :

Merci bien coq, exactement l'info dont j'avais beson ;-)

# février 25, 2007 14:05

coq a dit :

Content que ça serve :-)

# mars 2, 2007 21:35

Billou_13 a dit :

Merci Coq pour cet article (malgré que je le regardes à retardement ^^).

Cependant une question:

- Tu dis que "XmlSerializer(Type)" pose le problème de non-cache.

- Et dans le lien: http://blogs.msdn.com/tess/archive/2006/02/15/532804.aspx , partie "What is the solution?", il est spécifié: "The default constructors XmlSerializer(type) and XmlSerializer(type, defaultNameSpace) caches the dynamic assembly so if you use those constructors only one copy of the dynamic assembly needs to be created."

Quelle est la vérité ?

"XmlSerializer(Type)" passe en cache ou pas après première instanciation ?

Merci par avance,

Billou_13

# octobre 13, 2008 12:15

coq a dit :

De rien :-)

"Tu dis que "XmlSerializer(Type)" pose le problème de non-cache."

=> Non non, je dis le contraire :
"[...] d'une mise en cache [...] il semble que ce ne soit le cas QUE POUR le constructeur XmlSerializer (Type, String) ainsi que XmlSerializer (Type) qui repose sur ce dernier."

Ma tournure de phrase est peut être un peu ambigüe en fin de compte.

# octobre 17, 2008 22:09

Billou_13 a dit :

Au temps pour moi ^^

Merci pour la précision. Ca réconforte mes idées.

Très bonne journée,

Billou_13

# octobre 20, 2008 10:47

coq a dit :

De rien.

# octobre 24, 2008 21:31
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01