Lequel peut avoir de meilleures performances – LINQ to EF ou NHibernate?

Je veux commencer à travailler sur un gros projet. Je fais des searchs sur les problèmes de performances de LINQ à EF et NHibernate. Je veux utiliser l'un d'entre eux comme ORM dans mon projet. maintenant ma question est celle qui de ces deux ORM peut me donner une meilleure performance dans mon projet? Je vais utiliser SQL Server 2008 comme database et C # comme langage de programmation.

Aucun d'entre eux n'aura de "meilleures performances".

Lorsque vous parsingz la performance, vous devez regarder le facteur limitant. Le facteur limitant dans ce cas ne sera pas l'ORM que vous choisissez, mais plutôt comment vous utilisez cet outil, comment vous écrivez vos requêtes, et comment vous optimisez le backend de database.

Par conséquent, l'ORM "le plus rapide" sera celui que vous pouvez utiliser correctement, couplé avec le server de database que vous comprenez le mieux.

L'ORM lui-même a une certaine quantité de frais généraux, de sorte que le «plus rapide», en termes de performance pure, est d'utiliser aucun. Cependant, cela favorise le time passé par l'ordinateur à votre développement, ce qui n'est généralement pas un bon compromis. Les ORM peuvent économiser une grande partie de votre time de développement, tout en n'imposant qu'un léger surcoût lorsqu'ils sont utilisés correctement.

En règle générale, lorsque des personnes rencontrent des problèmes de performances lors de l'utilisation d'un ORM, c'est parce qu'elles utilisent l'ORM de manière incorrecte, plutôt que parce qu'elles ont choisi le «mauvais» ORM.

Nous utilisons actuellement Fluent NHibernate sur un de nos projets (avec des services web, ce qui ajoute un timeout supplémentaire) et pour autant que je puisse voir, l'access aux données est quasi instantané (du sharepoint vue humain).

Peut-être que quelqu'un peut fournir une réponse avec des numbers concrets si.

Étant donné que ces deux ORM sont quelque peu différents, il serait préférable de décider lequel utiliser en fonction de vos besoins spécifiques, plutôt que de la performance (ce qui, comme je l'ai dit, ne devrait pas être une grosse affaire).

Voici un bon benchmark . Comme vous pouvez voir les résultats dépendent si vous faites SELECT , UPDATE , DELETE .