Tiago Tartari, Microsoft MVP, SRE, Executivo e Especialista em Tecnologia
Performance

AutoMapper facilita, mas pode prejudicar a performance

publicado em 20 de julho de 2021
Tiago Tartari - Microsoft MVP

Conteúdo

AutoMapper facilita, mas pode prejudicar a performance da sua aplicação .NET

AutoMapper facilita, mas pode prejudicar a performance do seu software, ainda se performance é um atributo de qualidade a ser considerado. Talvez a melhor estratégia é não utilizá-lo.

Embora a performance possa ser prejudicada, adotar o AutoMapper ainda tem sido uma opção de produtividade para muitos desenvolvedores

Com o objetivo de melhorar a produtividade dos desenvolvedores, o AutoMapper traz a facilidade da cópia de um objeto origem para objeto destino somente com um mapeamento relativamente simples, inclusive de tipos diferentes.

Configurando o AutoMapper para fazer mapeamento de objetos

private static readonly MapperConfiguration Configuration = new(_ => { _.CreateMap<InserirClienteCommand, Cliente>(); });
private static readonly IMapper Mapper = Configuration.CreateMapper();

public static Cliente ToClienteAuto(this InserirClienteCommand command)
{
   return Mapper.Map(command);
}

Como proposto, com poucas linhas de código o mapeamento é feito. Toda facilidade de mapeamento colabora para uma redução da complexidade do código, mas em contra partida, traz problemas de performance.

Ao comparar com o “jeito tradicional” de fazer cópia de um objeto, o risco de “esquecimento” de algumas propriedades pode acontecer. Mas, ao considerar que esse esquecimento facilmente se resolve com validação, seguimos no “jeito tradicional”.

public static Cliente ToClienteManual(this InserirClienteCommand command)
{
    var result = new Cliente()
    {
        Codigo = command.Codigo,
        Nome = command.Nome,
        Documento = command.Documento,
        InscricaoEstadual = command.InscricaoEstadual,
        DataDeAbertura = command.DataDeAbertura,
        Site = command.Site,
        Cep = command.Cep,
        Endereco = command.Endereco,
        Numero = command.Numero,
        Bairro = command.Bairro,
        Cidade = command.Cidade,
        Uf = command.Uf,
        Telefone = command.Telefone
    };

    return result;
}

Utilizar AutoMapper em cenários críticos pode prejudicar a performance da sua aplicação o tempo para “preencher” e a alocação de recursos em memória são os dois principais indicadores que podem tornar o AutoMapper menos performático.

AutoMapper facilita, mas pode prejudicar a performance da sua aplicação em .NET
AutoMapper facilita, mas pode prejudicar a performance da sua aplicação em .NET
Gostou? Me ajude a impactar outras pessoas compartilhando esse post.
conheça mais sobre: .net
Tiago Tartari
Tiago Tartari

Ajudo executivos, times de negócios e especialistas técnicos a resolver problemas complexos utilizando a tecnologia como meio para potencializar resultados.