AutoMapper, MapperConfiguration.ctor медленно - PullRequest
0 голосов
/ 23 октября 2019

Мы используем AutoMapper (версия 9) в проекте MVC5, где у нас около 100 бизнес-объектов. Оказалось, что конструктор MapperConfiguration тратит около 600 мс на выполнение в нашем случае, что, я считаю, слишком много.

protected AutoMapper.IMapper InitializeMapper()
{
    var config = new MapperConfiguration(Configure);
    return config.CreateMapper();
}

protected override void Configure(IMapperConfigurationExpression expression)
{
    expression.CreateMap<User, UserViewModel>();

    /* Configuration for other business entities. */
}

Конфигурация действительно довольно большая, около 1200 строк кода, но мне интересно, что именно этот класс делает так много времени?

Представьте, что мне нужно, чтобы пользователь посмотрелмодель. Это тривиально.

var viewModel = ModelMapper.Map<User, UserViewModel>(CurrentUser);

Тем не менее, он тратит 600 мс только на настройку всей карты. Вот след.

enter image description here

Можно ли сделать это намного быстрее? Интересно, есть ли «ленивая» обработка, когда преобразователь считывает конфигурацию постепенно. Я имею в виду, что если мне нужно только преобразовать сущность типа User в UserViewModel, вероятно, будет непросто инициализировать все карты типов в конфигурации.

Обратите внимание, что экземпляр сопоставителя создается при каждом запросе, и этоне может быть изменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...