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.
