2010-01-19 4 views
4

Étant donné que LINQ to SQL est essentiellement une couche au-dessus de ADO.NET, elle nécessite une traduction. Cela signifie-t-il que l'utilisation directe d'ADO.NET est plus rapide que celle de LINQ? Ou la différence est-elle si petite qu'elle n'est pas pertinente?LINQ to SQL vs ADO.NET - ce qui est plus rapide?

+0

Voici quelques repères (http://www.ormbattle.net/) – yojimbo87

Répondre

23

signifie que ADO.NET est plus rapide. Cela vous donne également plus de liberté pour optimiser vos requêtes SQL (bien techniquement, vous pouvez utiliser LINQ to SQL avec des procédures stockées uniquement, mais vous perdriez tout le point). Le fait est que si vraiment vous avez vraiment besoin d'optimiser pour de meilleures performances, alors personne ne recommande vraiment d'utiliser un OR/M. Il y a beaucoup de considérations avec OR/M: s, en termes de performances. Mais beaucoup de sites n'ont pas vraiment besoin d'optimiser que beaucoup pour la performance, de la même manière que nous pouvons nous permettre la programmation en .NET plutôt qu'en assembleur, même si c'est le même genre de surcharge par rapport à l'écriture de code dans une langue de niveau inférieur. Le point d'utiliser LINQ to SQL ou NHibernate, ou tout autre OR/M est que (comme avec l'analogie .NET) cela vous donnera beaucoup de commodité, et vous économiserez beaucoup de temps à développer, et rendre le refactoring et autres changements ultérieurs une tâche beaucoup plus simple.

+0

Je donnerais deux votes si possible - ne jamais oublier l'entretien ... – Paddy

+1

Je voudrais juste ajouter un détail mineur: il y a beaucoup des développeurs db-unaware là-bas. Certains d'entre eux écrivent encore du SQL, et certains d'entre eux écrivent un SQL vraiment merdique. Certains OR/Ms (par exemple L2S) font une bonne quantité d'optimisation de requêtes avant de frapper la base de données, donc bien que la matérialisation de l'objet puisse avoir un peu de surcharge, vous pouvez aussi obtenir des gains de performance DB si vous avez des devs db-unaware équipe ... JMHO. – KristoferA

5

En cours d'exécution, il est plus lent. Cependant, Linq to SQL économise le temps de développement qui est son principal avantage, à mon humble avis.

Bonté,

Dan

4

Techniquement, oui, il y a certains frais généraux et Linq2Sql peut générer un peu moins que parfois optimale SQL, mais à moins que vous faites de haute performance ou de travail à haut rendement, vous êtes sans doute peu de chances remarquez-le. Mon conseil serait de choisir la technologie DA qui répond le mieux à vos besoins et de l'accompagner. Rappelez-vous les avantages des choses comme Linq2SQL ou EF: temps de développement réduit passé à écrire des couches DA répétitives, et réduction du code (donc en théorie peut-être réduit les bugs et moins de maintenance - bien que cela soit discutable). Puis profil pour la performance plus tard et si vous détectez un goulot de bouteille, vous pouvez commencer à optimiser les requêtes spécifiques puis, et si absolument nécessaire, les requêtes très importantes qui causent de gros cols peuvent être converties en ado.net

2

Il est vrai que LINQ to SQL est une couche au-dessus de ADO.NET. Mais il en va de même pour les autres options qui vous permettent de conserver les résultats en mémoire. Si votre intention est d'agir sur les données immédiatement après la récupération, il est préférable de travailler avec ADO.NET DataReader dans une boucle pour de meilleures performances. Toutefois, si vous devez effectuer un traitement supplémentaire sur les données, vous devez conserver la mémoire en utilisant une sorte de variable telle qu'une entité LINQ to SQL ou DataTable. Ces deux variables de mémoire sont générées de la même manière sous les couvertures. Compte tenu de ce fait, je dirais que la vitesse dont chaque option est disponible dans la mémoire n'est pas aussi importante que la façon dont vous envisagez de travailler avec les données.

Questions connexes