Je veux juste ajouter que le contexte de nombre d'enregistrements que vous attendez joue un grand rôle parce que si vous retournez une seule ligne, alors la différence de performance entre ces deux ne seraient pas significatives. Toutefois, si vous parcourez plusieurs lignes, l'utilisation d'un accesseur typé est préférable pour les performances, car il est optimisé. Donc, dans ce cas, si vous avez besoin d'obtenir les meilleures performances en utilisant un nom de colonne, appelez GetOrdinal une fois, placez-le dans une variable, puis utilisez l'accesseur tapé avec l'ordinal de colonne dans votre boucle. Cela donnerait la meilleure performance.
si vous êtes curieux de savoir la différence consultez my blog post
performance Quelqu'un at-il une idée de l'impact sur les performances de l'utilisation GetOrdinal (..) à l'intérieur boucle de la ligne par rapport à, par exemple la récupération de données réelles de DB? –
J'ai un test performamce pour un service Web API qui lit environ 30-40 enregistrements de DB stocké proc (avec plusieurs jeux de résultats) et retourne Json d'environ 8K taille. Dans ce test, j'ai remplacé GetOrdinal() par des constantes statiques et j'ai donc obtenu 2% d'augmentation des performances ... cela vaut-il donc la peine de créer un tel cache de noms de colonnes? - Je suppose que dans la plupart des scénarious pas. La lecture des données de la DB et la sérialisation des données vers Json dans de vrais scenarious influenceront davantage les performances, donc je pense que la mise en cache des ordinaux sera la dernière chose à faire lorsque vous avez déjà optimisé tout le reste ... –