Подтвердить что ты не робот

Automapper работает очень медленно при отображении 1400 записей

Я использую AUtomapper, который меня очень впечатляет, однако у меня есть сложный объект со множеством вложенных коллекций. Я использую Telerik OpenAccess, и он быстро возвращает 1400 записей, но когда я передаю его Automapper, и он замедляет смешной сканирование. Вот мой код для справки:

        List<DAL.Event> query = httpContext.Events.Where(e => e.Inactive != true && e.Event_Locations != null).ToList();
        Mapper.CreateMap<DAL.Event, EventDTO>();
        Mapper.CreateMap<DAL.Event_Association, EventAssociationDTO>();
        Mapper.CreateMap<DAL.Event_ExecutingUnit, EventExecutingUnitDTO>();
        Mapper.CreateMap<DAL.Event_Funding, EventFundingDTO>();
        Mapper.CreateMap<DAL.Event_Location, EventLocationDTO>();
        Mapper.CreateMap<DAL.Event_Objective, EventObjectiveDTO>();
        Mapper.CreateMap<DAL.Event_OSR, EventOSRDTO>();
        Mapper.CreateMap<DAL.Event_PaxBreakDown, EventPAXBreakDownDTO>();
        Mapper.CreateMap<DAL.Event_RegionalConsideration, EventRegionalConsiderationDTO>();
        Mapper.CreateMap<DAL.Event_ReviewStatus, EventReviewStatusDTO>();
        Mapper.CreateMap<DAL.Event_SPCalendarClone, EventSPCalendarClonesDTO>();
        Mapper.CreateMap<DAL.Event_Task, EventTasksDTO>();
        Mapper.CreateMap<DAL.Event_TSO, EventTSOsDTO>();
        Mapper.AssertConfigurationIsValid();
        Mapper.AllowNullDestinationValues = true;

        IList<EventDTO> result = Mapper.Map<List<DAL.Event>, List<EventDTO>>(query);
        return result;

HELP!

4b9b3361

Ответ 1

На моей предыдущей работе была команда, которая также использовала Automapper, но в итоге они удалили ее из-за влияния производительности.

Я думаю, что в этом конкретном сценарии лучше всего самому написать код сопоставления или начать замену их по одному. Возможно, одно сопоставление вызывает плохую производительность?

Ответ 2

Я тестировал automapper. Одно ядро ​​2.0GHz Xeon способно обрабатывать 85 000 карт в секунду на маленьком объекте (3 свойства). Это было в 60 раз медленнее, чем вручную копирование свойств. Если вы хотите, я могу сравнить другие ценности для вас.

Ответ 3

Я не думаю, что такие инструменты предназначены для сопоставления многих записей. Я думаю, что AutoMapper предназначен для сопоставления View Model, и не является нормальным отображать 1400 записей на экране.

Ответ 4

Для тех, кто пришел к этому позже, выпуск AutoMapper 5.x значительно улучшил производительность, когда скорость отображения только немного медленнее, чем отображение вручную (элементы 1M):

  • Родной: 0,19 с
  • AutoMapper: 0.49s
  • AutoMapper 4.2.1: 29s