Michel Perfetti
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
 5 | Conclusion
Téléchargez le code source - 11 Kb
Conclusion
Quelques liens pour finir :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/
 
» Démarrer une discussion
 
Discussion démarée par MickyMax le 18/11/2007 à 14:44, 1 commentaire(s).