Question

Je suis le test de performance créé par la communauté Dapper.

Actuellement, je reçois ce qui suit après avoir exécuté les tests 10000 fois:

  • EF 5 = 21595 ms
  • ADO.NET = 52183 ms
  • Dapper = 52499 ms
  • iBatis = 83138 ms

J'ai besoin que quelque chose m'aide à comprendre pourquoi EF est plus rapide. Qu'ai-je fait de mal?

Le code que j'utilise est sur Github

Merci!!!

Réponse d'expert

Premièrement, EF est certainement allé plus vite: ils ont investi beaucoup de temps dans l’amélioration de la performance - la plupart de mes mesures ont toujours des retombées notables. Considérez: EF se trouve au-dessus de ADO.NET. Si EF rapporte des résultats significativement plus rapides qu'ADO.NET, alors (et je pense que vous le soupçonnez déjà): vous ne mesurez pas ce que vous pensez mesurer.

Je soupçonne que le problème principal ici est que vous effectuez toutes les opérations sur le même contexte de données. Cela signifie que vous ne faites probablement que souligner le gestionnaire d’identités et le cache. Je ne peux pas exécuter votre code directement (car il utilise Oracle, etc.), mais il serait intéressant de voir les requêtes effectuées. Dans le monde réel, chaque contexte de données a une durée de vie unitaire limitée. Il serait extrêmement rare d’exécuter 10 000 opérations sur le même contexte de données. Plus typique serait une poignée d'opérations.

Cependant, sans aucun rapport: je dois dire: je suis très heureux de vos résultats montrant Dapper comme étant à 0,6% des performances ADO.NET brutes. C'est exactement ce que nous recherchions avec dapper: la performance complète d'ADO.NET brut, mais en supprimant tout simplement la douleur du codage.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi