2

Falando em termos de performance no todo(velocidade, integridade e etc...), usar expressões lambdas para consultar banco de dados, é melhor nos termos acima ou não ou depende?

2 Respostas 2

3

Para o caso de objetos que implementam IQueryable, há o tempo da construção da sentença que consome algum processamento, portanto, partindo de termos absolutos, a sentença em SQL estático será ou mais rápida ou equivalente ao SQL gerado.

Entretanto, falando em integridade e consistência, o SQL estático, apenas, não garante. Todo o mapeamento de dados entre as estruturas da linguagem de programação precisa ser feito manualmente pelo programador, o que pode produzir erros comuns como a falta de colunas e/ou informações que podem causar erros na execução de um fluxo trivial do sistema.

No caso do Entity Framework, ao persistir dados, o Framework realiza algumas verificações automaticamente, o que melhora a consistência e a integridade referencial (não garante 100%, mas melhora). Se o código é gerado a partir de um banco de dados que já existe (Database First), os objetos do Modelo terão copiar fidedignamente o banco. Se o banco é gerado a partir do código (Code First), toda e qualquer validação colocada como configuração será replicada para a base.

Comparando uma e outra, Expression Methods (vulgo lambda) e LINQ, não há diferença em performance, visto que ambas montam o objeto IQueryable de maneira muito similar. A diferença mesmo está na expressividade de cada uma. Expression Methods são mais sucintos, enquanto que LINQ é mais didática e clara por se aproximar de uma linguagem natural, no caso, o inglês.

2
  • Ok, mas nesse caso, conforme eu perguntei, a comparação entre linq e lambda dentro do que vc falou, tem como dizer se essa é melhor do que aquela ou ambas são equivalentes no contexto performance.
    – pnet
    Commented 5/06/2014 às 20:39
  • @pnet Atualizei pra você. Commented 5/06/2014 às 20:49
0

Diferença há sim. Lambda Expression é mais performático que LINQ. Segue link que comprova o que digo. http://imasters.com.br/artigo/15036/dotnet/comparativo-de-performance-linq-lambda-e-dynamic-linq

2
  • Fábio, bem vindo ao Stackoverflow! Agradecemos você querer ajudar! No entanto, a sua resposta se resume a um link que neste momento é válido mas nada nos garante que continue a sê-lo no futuro. O stackoverflow deve ser encarado como um repositório de conhecimento e não apenas um site de pergunta resposta. Ao responder devemos pensar, não só em quem perguntou, mas em todos aqueles que no futuro poderão usufruir da nossa resposta.
    – ramaral
    Commented 3/11/2014 às 13:38
  • Só para constar, o exemplo deste site é falho, ele nunca enumera os valores o que faz que que tanto a expressão lambda quando a query linq nunca sejam realmente executadas. Commented 3/11/2014 às 13:48

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .