Я просто хочу добавить, что контекст, сколько записей вы ждете играет большую роль, потому что если вы возвращаете одну строку, то разница в производительности между этими двумя не будет значительным. Однако, если вы перебираете много строк, то использование типизированного аксессура лучше для производительности, поскольку оно оптимизировано. Таким образом, в этом случае, если вам нужно получить лучшую производительность с помощью имени столбца, тогда вызовите GetOrdinal один раз, поместите его в переменную, а затем используйте типизированный accessor с порядковым номером столбца в вашем цикле. Это даст лучшую производительность.
, если вы хотите знать, разница в производительности проверить my blog post
ли кто-нибудь представление о влиянии на производительность использования GetOrdinal (..) внутри цикла строк по сравнению, например, фактического извлечения данных из БД? –
У меня есть тест производительности для службы веб-API, которая считывает около 30-40 записей из хранимой процедуры БД (с несколькими наборами результатов) и возвращает Json размером около 8 КБ. В этом тесте я заменил все GetOrdinal() на статические int-константы, и в результате я получил увеличение производительности на 2% ... так стоит ли создавать такой кеш имен столбцов? - Наверное, в большинстве сценариев нет. Чтение данных из базы данных и сериализации данных в Json в реальном сценарии повлияет на производительность больше, поэтому я думаю, что кэширование ординалов будет последним, что нужно делать, когда вы уже оптимизировали все остальное ... –