Ich folge dem Leistungstest , den Dapper Community erstellt hat.
Derzeit erhalte ich folgende Tests, nachdem ich die Tests 10000 Mal durchgeführt habe:
Ich brauche etwas, das mir hilft zu verstehen, warum EF schneller ist. Was habe ich falsch gemacht?
Der Code, den ich verwende, ist auf Github
Vielen Dank!!!
Zum einen ist EF definitiv schneller geworden: Sie haben viel Zeit in die Verbesserung der Performance investiert - bei den meisten meiner Maßnahmen hat sie immer noch einen merklichen Overhead. Bedenken Sie: EF sitzt auf ADO.NET. Wenn EF Ergebnisse liefert, die wesentlich schneller sind als ADO.NET, dann (und ich denke, Sie vermuten dies bereits): Sie messen nicht, was Sie zu messen glauben .
Ich vermute, das Hauptproblem hier ist, dass Sie alle Operationen im selben Datenkontext durchführen. Das bedeutet, dass Sie wahrscheinlich nur den Identitätsmanager und den Cache betonen. Ich kann den Code nicht direkt ausführen (weil er Oracle usw. verwendet), aber es wäre interessant, die tatsächlichen Abfragen anzuzeigen, die ausgeführt werden. In der Praxis hat jeder Datenkontext eine endliche Lebensarbeitszeit. Es wäre unglaublich selten 10.000 Operationen im selben Datenkontext auszuführen. Typischer wäre eine Handvoll Operationen.
Unabhängig davon: Ich muss sagen: Ich bin sehr zufrieden mit den Ergebnissen, die dapper innerhalb von 0,6% der ADO.NET-Rohleistung liegen. Das ist im Grunde genau das, was wir mit dapper machen wollten: die volle Leistung von ADO.NET, aber einfach den Programmierschmerz wegzunehmen.