13 Stimmen

Automapper läuft extrem langsam beim Zuordnen von 1400 Datensätzen

Ich verwende AUtomapper, die ich sehr beeindruckt bin mit jedoch, ich habe ein komplexes Objekt mit vielen verschachtelten Sammlungen. Ich verwende Telerik OpenAccess und es gibt die 1400 Datensätze schnell zurück, aber wenn ich es an Automapper übergebe, wird es zu einem lächerlichen Kriechgang. Hier ist mein Code als Referenz:

        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;

HILFE!

13voto

Gerrie Schenck Punkte 21800

Bei meiner früheren Arbeitsstelle gab es ein Team, das ebenfalls Automapper einsetzte, es aber schließlich wegen der Leistungseinbußen wieder entfernte.

Ich denke, in diesem speziellen Szenario ist es am besten, den Mapping-Code selbst zu schreiben oder sie nach und nach zu ersetzen. Vielleicht ist ein Mapping die Ursache für die schlechte Leistung?

13voto

Bryan Boettcher Punkte 4352

Ich habe automapper einem Benchmarking unterzogen. Ein einzelner Kern eines 2.0GHz Xeon ist in der Lage, 85.000 Karten pro Sekunde für ein kleines Objekt (3 Eigenschaften) zu verarbeiten. Es war 60 Mal langsamer als das manuelle Kopieren der Eigenschaften. Wenn Sie möchten, kann ich andere Werte für Sie testen.

9voto

Craig Punkte 35494

Ich glaube nicht, dass Werkzeuge wie dieses für die Abbildung so vieler Datensätze ausgelegt sind. Ich denke, AutoMapper ist für das Mapping eines Ansichtsmodells konzipiert und es ist nicht normal, 1400 Datensätze auf dem Bildschirm anzuzeigen.

8voto

Jimmy Bogard Punkte 24802

Für diejenigen, die erst später dazu kommen, hat AutoMapper 5.x erhebliche Leistungsverbesserungen gebracht, bei denen die Mapping-Geschwindigkeit nur geringfügig langsamer ist als beim manuellen Mapping (1 Mio. Elemente):

  • Nativ: 0,19s
  • AutoMapper: 0.49s
  • AutoMapper 4.2.1: 29s

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X