LINQ to SQL vs ADO.NET - qui est le plus rapide?
Depuis LINQ to SQL est fondamentalement une couche sur le dessus de ADO.NET il nécessite une traduction. Est-ce à dire que l'utilisation de ADO.NET directement est plus rapide que LINQ? Ou est la différence, si petite qu'il n'est pas pertinent?
Voici quelques repères (ormbattle.net)
OriginalL'auteur Herter | 2010-01-19
Vous devez vous connecter pour publier un commentaire.
Cela signifie que ADO.NET est plus rapide. Il vous donne également des tas de plus de liberté pour optimiser vos requêtes SQL (techniquement, vous pouvez utiliser LINQ to SQL avec des procédures stockées uniquement, mais vous manquerez sur le point de l'ensemble).
Le fait est que si vous avez vraiment vraiment vraiment besoin pour optimiser pour de meilleures performances, alors que personne n'a vraiment recommande l'utilisation de l'un OU/M. Il y a des tas de considérations OU/M:s, en terme de performance. 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 de programmation .NET plutôt que de l'assembleur, même si c'est le même type de surcharge par rapport à l'écriture de code dans un langage de plus bas niveau.
Le point de l'utilisation de LINQ to SQL ou NHibernate, ou de toute autre OU/M, c'est que (comme avec l' .NET analogie), il va vous donner un tas de commodité, et il va vous faire économiser beaucoup de temps de développement, et de faire du refactoring et d'autres changements beaucoup plus facile.
Je voudrais juste ajouter un petit détail: il y a beaucoup de db n'est pas au courant développeurs là-bas. Certains d'entre eux encore écrire de SQL, et certains d'entre eux d'écrire vraiment merdique SQL. Certains OU/Ms (par exemple, L2S) un montant juste de l'optimisation de la requête avant de frapper la DB, de sorte que même objet matérialisation etc peuvent avoir un peu de surcharge, vous pouvez également obtenir d'énormes DB côté des gains de performances si vous avez db-ignorant les développeurs de votre équipe... JMHO.
OriginalL'auteur David Hedlund
Dans l'exécution il est très légèrement plus lent. Cependant, Linq to SQL enregistre le temps du développeur qui est son principal avantage, à mon humble avis.
Gentillesse,
Dan
OriginalL'auteur Daniel Elliott
Techniquement, oui, il y a certains frais généraux, et de Linq2Sql peut générer de moins qu'optimale SQL parfois, mais sauf si vous faites de haute performance ou de haut débit travail vous sont probablement peu de chances de le remarquer.
Mon conseil serait de choisir la DA de la technologie qui convient à vos besoins le plus et aller avec elle. Rappelez-vous les avantages de choses comme Linq2SQL ou EF est diminué développeur de temps passé à l'écriture répétitive DA couches, et code de réduction (donc, en théorie, peut-être réduite de bugs et de moins d'entretien, même si c'est discutable). Puis profil de performance plus tard et si vous détectez un goulot de bouteille, vous pouvez commencer à l'optimisation de requêtes spécifiques alors, et si cela est absolument nécessaire, très important de requêtes qui sont à l'origine des grands cols de bouteille peuvent être convertis à tout simplement ado.net
OriginalL'auteur Simon P Stevens
Il est vrai que LINQ to SQL est une couche sur le dessus de ADO.NET. Mais d'autres options qui vous permettent de tenir les résultats en mémoire. Si votre intention est d'agir sur les données immédiatement après la récupération, vous êtes mieux de travailler avec ADO.NET DataReader dans une boucle pour de meilleures performances. Toutefois, si vous avez besoin de faire des traitements sur les données, vous aurez besoin de tenir dans la mémoire en utilisant une sorte de variable comme une LINQ to SQL Entité ou DataTable. Ces deux variables de mémoire sont essentiellement générés de la même façon sous les couvertures. Compte tenu de ce fait, je dirais que la vitesse de chaque option est disponible dans la mémoire n'est pas que de l'importation, la façon dont vous prévoyez sur l'utilisation des données.
OriginalL'auteur Tom Brothers