cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
24 févr. 2007 à 11:49
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
24 févr. 2007 à 17:16
Bonjour,
J'ai besoin de sérialiser/désérialiser un objet qui contient seulement 2 propriétés de type string.
Quand j'utilise la classe XmlSerializer pour faire celà, ça me prend plus de 3 secondes pour désérialisation.
Quand je charge moi même le document xml dans un XmlDocument puis que j'affecte au propriété les valeur des noeuds que je souhaite désérialiser, ça ne me prends pas plus d'une seconde.
Comment expliquer une telle différence de performance ?
Je remarque en fait que c'est la création de l'objet XmlSerializer qui prend la majeur partie du temps dans le premier cas. Pourquoi ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 févr. 2007 à 12:36
Salut,
En fait à la première initialisation (durant l'execution du processus) pour un type, XmlSerializer génère et compile du code pour la sérialisation/désérialisation. D'où la lenteur.
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 24 févr. 2007 à 12:57
Merci.
Donc je dois compiler ma classe, puis éxécuter sgen pour généré une dll. Mais comment après indiquer au XmlSerializer qu'il doit utiliser la dll générée plutot que de générer lui même du code ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 févr. 2007 à 13:45
Il s'installe effectivement avec le SDK .NET 2.0 (pas avec le Runtime), et se trouve donc dans %ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin si tu utilises VS2005 comme IDE pour tes développements .NET 2.0
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 24 févr. 2007 à 17:00
Quand tu dis : "XmlSerializer génère et compile du code pour la sérialisation/désérialisation".
Tu veux dire qu'il fait celà à chaque exécution ? C'est à dire une fois que le programme à fini de s'éxécuter il détruit la dll ? Ou alors si je relance le programme une deuxième fois il réutilisera la dll déjà crée ?