La réflexion de la performance dépendra de la mise en œuvre (les appels doivent être mis en cache par exemple: entity.GetType().GetProperty("PropName")
). Depuis plus de la réflexion que je vois sur une base quotidienne est utilisé pour remplir des entités à partir des données de lecteurs ou d'autres type de référentiel des structures, j'ai décidé de performance de référence spécifiquement à la réflexion, lorsqu'il est utilisé pour obtenir ou définir l'une des propriétés des objets.
J'ai mis au point un test qui je pense est juste, car il met en cache tous les répétant les appels et les seules fois où le réel SetValue ou GetValue appel. Tout le code source pour le test de performance est en bitbucket: https://bitbucket.org/grenade/accessortest. L'examen sont les bienvenues.
La conclusion je suis venu, c'est qu'il n'est pas pratique et ne fournit pas de notables améliorations de performance à la suppression de la réflexion dans une couche d'accès aux données qui revient à moins de 100 000 lignes à un moment où la réflexion de la mise en œuvre est bien fait.
Le graphique ci-dessus illustre la sortie de mon petit benchmark et montre que les mécanismes qui dépassent le reflet, seulement faire sensiblement après 100 000 cycles de marque. La plupart des Lad seulement le retour de plusieurs centaines ou peut-être des milliers de lignes à la fois et à ces niveaux de réflexion effectue très bien.