Accueil
Articles
Astuces
Vidéos
Actualités
Auteurs
A propos
Contact
S'enregistrer
|
S'identifier
S'identifier
Authentification invalide
N
om d'utilisateur
M
ot de Passe
S
e souvenir de moi la prochaine fois.
S'identifier
Annuler
S'enregistrer
Mot de passe oublié ?
Mapping de données par attributs: comment éviter les pertes de performance grâce à la génération de MSIL à l'exécution
Cet article présente une classe qui permet le mapping par attributs sur un IDataReader en générant à l'exécution du code MSIL spécifique à la classe à
Par
Michel Perfetti
publié le 27/09/2005 à 23:03, lu 5774 fois, 5 pages
1 commentaire(s)
Tags:
Réflection
5 | Conclusion
1 | Introduction
2 | La classe Mapper
3 | Génération du mapping
4 | Performances
5 | Conclusion
Téléchargez le code source - 11 Kb
Conclusion
Quelques liens pour finir :
Quelques informations à propos des performances de la réflexion :
Dodge Common Performance Pitfalls to Craft Speedy Applications
La liste des différents
opcodes programmables
en .net 2.0
L'aide de la classe
DynamicMethod
Ce genre d'écriture de code MSIL n'est pas très compliqué. Il suffit d'y aller progressivement. Pour cet exemple, j'ai d'abord commencé à générer le code pour la lecture d'un IDataRecord seulement.
Contrairement à un programme classique, par contre, il est très difficile à debugguer: le debuggueur intégré de Visual Studio n'affiche pas les opcodes un par un mais à la place les instructions assembleur du code natif correspondant. En cas de problème l'exception « Invalid Program » ne nous aide pas non plus à avancer !
Une astuce m'a permit de trouver les erreurs rapidement dans le code : j'ai utilisé l'instruction « pop » pour supprimer des données dans la pile à la place d'exécuter certaines instructions. Généralement le problème venait de données qui restaient sur la pile et dans ce cas, les seuls outils qui peuvent nous aider sont un papier, une gomme et un crayon pour dessiner la pile !
Je remercie
Frédéric Mélantois
pour son aide sur les tests, la vérification des performances, et ses idées sur les fonctionnalités à ajouter !
Michel
http://www.loonetic.com/blog/
1
2
3
4
5
»
Démarrer une discussion
Erreur
Chargement ...
Discussion démarée par
MickyMax
le 18/11/2007 à 14:44, 1 commentaire(s).
Ecrire un commentaire
Titre
Commentaire
Annuler