powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq и SqlDataReader
4 сообщений из 29, страница 2 из 2
Linq и SqlDataReader
    #37475408
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал свой маппер на Emit'овские GetProperty и SetValue. Тест проводился на миллионе записей в DataTable (ID, Value), намапливаемых в IEnumerable<T>. Замер времени брался только на маппинг (не на заполнение таблицы, разумеется). Итоги:

Reflection vs EmitЗамер 1Замер 2Замер 3Замер 4Замер 5Среднее20162017204320311973 2016.0 48664844487748424835 4852.8

Emit в 2.4 раза быстрее отработал за счёт кеширования свойств.
...
Рейтинг: 0 / 0
Linq и SqlDataReader
    #37475515
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ Emit в 2.4 раза быстрее отработал за счёт кеширования свойств.За счёт кодогенерации записи в свойства вместо PropertyInfo.SetValue. Ну и сама кодогенерация, разумеется, кешируется.

В случае с чтением из датаридера, возможно, это и не даст существенного выигрыша, по сравнению с временем выполнения запроса. Но и хуже не будет. :-)

А в задачах клонирования объектов, мэппингов между объектами, или DataTable и объектом и т. п. это даёт выигрыш в десятки раз. А в задаче сортировки по свойству класса, указываемому динамически (тычок на заголовок грида), без эмита просто не обойтись. В WPF к счастью для этого есть родные механизмы, а вот в WinForms таких возможностей нет. Конечно, в WinForms можно отказаться от типизированных списков в пользу DataTable, но это не наш метод. :-)

ЗЫ: Если я не ошибаюсь, вызов делегата происходит медленнее вызова обычного метода. Можно ещё ускорить, заменив генерацию делегата генерацией виртуального метода.
...
Рейтинг: 0 / 0
Linq и SqlDataReader
    #37476023
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА в задачах клонирования объектов, мэппингов между объектами, или DataTable и объектом и т. п. это даёт выигрыш в десятки раз.
Леня, харэ фантазировать. Привел же замеры, в 2.4 раза на миллионе запией :)
...
Рейтинг: 0 / 0
Linq и SqlDataReader
    #37476051
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА в задачах клонирования объектов, мэппингов между объектами, или DataTable и объектом и т. п. это даёт выигрыш в десятки раз.
Леня, харэ фантазировать. Привел же замеры, в 2.4 раза на миллионе запией :)
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq и SqlDataReader
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]