sólo quiero añadir que el contexto de la cantidad de registros que está esperando juega un papel muy importante porque si va a devolver una sola fila y luego diferencia de rendimiento entre los dos no serían significativos. Sin embargo, si realiza un bucle en varias filas, entonces, usar el acceso de escritura mecanografiado es mejor para el rendimiento, ya que está optimizado. Entonces, en ese caso, si necesita obtener el mejor rendimiento mediante el uso de un nombre de columna, llame a GetOrdinal una vez, colóquelo en una variable y luego use el descriptor de acceso tipeado con la columna ordinal en su ciclo. Esto produciría el mejor rendimiento.
si eres curioso acerca de la diferencia de rendimiento echa un vistazo a my blog post
¿Alguien tiene una idea sobre el impacto en el rendimiento de la utilización de GetOrdinal (..) en el interior del bucle fila en comparación con, por ejemplo, la recuperación de los datos reales de la base de datos? –
Tengo una prueba de rendimiento para un servicio de API web que lee aproximadamente 30-40 registros del proceso almacenado de DB (con varios conjuntos de resultados) y devuelve Json de aproximadamente 8 KB de tamaño. En esta prueba, reemplacé todas las constantes GetOrdinal() por constantes estáticas y como resultado obtuve un aumento del 2% en el rendimiento ... ¿Vale la pena el esfuerzo para crear ese tipo de caché de nombres de columna? - Supongo que en la mayoría de los casos no. Leer datos de DB y serialización de datos en Json en situaciones reales influirá más en el rendimiento, por lo que creo que el almacenamiento en memoria caché de ordinales será lo último que hacer cuando ya haya optimizado todo lo demás ... –