query practices optimizar lento framework consulta best performance linq-to-sql entity-framework stored-procedures

performance - practices - entity framework precompiled query



Rendimiento de Linq a Sql vs Entity Framework (3)

He estado buscando benchmarks de rendimiento recientes que comparen L2S y EF y no pude encontrar ninguno que probara los procedimientos almacenados de llamadas usando la versión de lanzamiento de EF. Entonces, realicé algunas de mis pruebas y encontré algunos resultados interesantes.

¿Estos resultados se ven bien? ¿Debería probarlo de otra manera?

Una instancia del contexto, una llamada de sproc: (enlace muerto)

Una instancia del contexto, llamadas múltiples del mismo sproc: (enlace muerto)

Varias instancias del contexto, llamadas múltiples del mismo sproc: (enlace muerto)


Creo que debería probarlo de una manera algo diferente, para distinguir los costos iniciales de los costos de ejecución . El Marco de la Entidad, en particular, tiene importantes costos de inicio como resultado de la necesidad de compilar vistas de la base de datos (aunque puede hacerlo de antemano). Del mismo modo, LINQ tiene una noción de una consulta compilada , que sería adecuada si se ejecuta una consulta varias veces.

Para muchas aplicaciones, los costos de ejecución de consultas serán más importantes que los costos de inicio. Para algunos, lo opuesto puede ser cierto. Dado que las características de rendimiento de estos son diferentes, creo que es importante distinguirlos. En particular, promediando los costos de inicio en el costo promedio de una consulta ejecutada repetidamente es engañoso.


Hice un par de páginas asp.net de prueba para ver cuál funciona mejor. Mi prueba fue:

Eliminar 10.000 registros Insertar 10.000 registros Editar 10.000 registros Databind los 10.000 registros a un GridView y mostrar en la página

Esperaba que LinqToSQL fuera más rápido, pero hacer el LinqToSQL anterior lleva casi 2 minutos, mientras que LinqToEntities lleva menos de 20 segundos.

Al menos para esta prueba, parece que LinqToEntities es más rápido. Mis resultados parecen coincidir con los tuyos también.

Sin embargo, no intenté Insertar / Editar / Eliminar / Mostrar más de 1 tabla unida.

Estoy interesado en saber más ... o si mi prueba no es válida, me gustaría ver algunas pruebas reales.