Необходимо ускорить автомаппер… На создание 113 объектов уходит 32 секунды

Существует некоторый материал в Apache Портативное Время выполнения (APR), что я ожидал бы быть очень солидным.

26
задан chobo2 6 March 2011 в 03:46
поделиться

3 ответа

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

Так что если SomethingThatMightBeNull часто имеет значение null, то это отображение будет работать плохо из-за исключений NullreferenceException:

.ForMember(dest => dest.Blah, c.MapFrom(src=>src.SomethingThatMightBeNull.SomeProperty))

Я обнаружил, что внесение такого изменения будет более чем вдвое меньше времени отображения занимает :

.ForMember(dest => dest.Blah, c.MapFrom(src=> (src.SomethingThatMightBeNull == null
    ? null : src.SomethingThatMightBeNull.SomeProperty)))

Обновление: синтаксис C # 6

.ForMember(dest => dest.Blah, c.MapFrom(src => (src.SomethingThatMightBeNull?.SomeProperty)))
28
ответ дан 28 November 2019 в 06:25
поделиться

Если ваши подколлекции велики, вы можете использовать «Any ()» вместо «Count> 1». Любая функция должна будет выполнять итерацию только один раз, в то время как счетчику может понадобиться выполнить итерацию коллекции entmes (в зависимости от реализации).

3
ответ дан 28 November 2019 в 06:25
поделиться

Я исправил ту же проблему, что и ваша. Это также стоит мне 32 секунды за отображение только одного объекта. Итак, я использую opts.Ignore () для работы с каким-то настраиваемым объектом, как показано ниже:

            CreateMap<SiteConfiguration, Site>()
                .ForMember(x => x.SubSystems, opts => opts.Ignore())
                .ForMember(x => x.PointInformations, opts => opts.Ignore())
                .ForMember(x => x.Schedules, opts => opts.Ignore())
                .ForMember(x => x.EquipmentDefinitions, opts => opts.Ignore());

После этого он стоит всего несколько миллисекунд.

0
ответ дан 28 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: