Puntos de referencia EF 5

ado.net c# dapper entity-framework ibatis

Pregunta

Estoy siguiendo la prueba de rendimiento que creó la comunidad Dapper.

Actualmente, recibo lo siguiente después de ejecutar las pruebas 10000 veces:

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

Necesito que algo me ayude a entender por qué EF es más rápido. ¿Qué hice mal?

El código que estoy usando está en Github

¡¡¡Gracias!!!

Respuesta experta

En primer lugar, EF definitivamente se hizo más rápido: invirtieron mucho tiempo mejorando el rendimiento: en la mayoría de mis medidas, todavía tiene una sobrecarga notable. Considere: EF se sienta encima de ADO.NET. Si EF informa resultados que son significativamente más rápidos que ADO.NET, entonces (y creo que ya sospecha esto): no está midiendo lo que cree que está midiendo.

Sospecho que la cuestión clave aquí es que estás realizando todas las operaciones en el mismo contexto de datos. Esto significa que probablemente ahora solo estés enfatizando el administrador de identidad y el caché. No puedo ejecutar su código directamente (porque usa Oracle, etc.), pero sería interesante ver las consultas reales que se realizan. En el uso del mundo real, cada contexto de datos tiene una vida de unidad de trabajo finita. Sería increíblemente raro ejecutar 10.000 operaciones en el mismo contexto de datos. Más típico sería un puñado de operaciones.

Sin embargo, no relacionado: tengo que decir: estoy muy satisfecho con sus resultados que muestran que dapper está dentro del 0.6% del rendimiento bruto de ADO.NET. Esto es básicamente lo que estábamos buscando con dapper: el rendimiento completo de ADO.NET en bruto, pero simplemente eliminando el dolor de codificación.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow