EF 4.0 Performance Tips #2

Uno de los elementos más fáciles de implementar y gracias al cual notaremos una importante mejora dentro de nuestras aplicaciones usando .NET Entity Framework, aquí es independiente la version, es el uso de la “precompilación de vistas”.

Uno de de los mayores puntos en la creación de la abstracción de la base de datos por parte de EF consiste en la creacion de vistas de consulta y actualización en el lenguaje nativo de la base de datos. Durante este proceso hay una carga importante de tiempo y de consumo de memoria, aunque las mismas se cachean dentro del dominio de aplicación en posteriores usos. Con el fin de ver cuanto de importante es este punto podéis echar un vistazo a la siguiente gráfica, donde podemos observar que este proceso representa aproximádamente un 56%, el color violeta, en un proceso de ejecución de una consulta.

untitled

Afortunadamente, para resolver este problema podemos precompilar e incluir en el proyecto estas vistas, de tal forma que nos libremos en tiempo de ejecución de su creación, por medio de la herrramienta EDMGEN.exe. Los pasos para realizarlas los tenéis disponibles aquí.

 

Otra de las opciones para pregenerar estas vistas es mediante la utilización de una simple plantilla T4, que realiza todo el trabajo anterior por nosotros y por lo tanto nos libramos de tener que incorporar opciones de precompilación a los proyectos que tengan modelos de Entity Framework.  La citada plantilla T4 os la podéis descargar de su enlace original en el blog del equipo de ADO.NET  aunque la misma no la han actualizado a la version final de EF 4.0 y por lo tanto NO OS FUNCIONARÁ CORRECTAMENTE, pero dejo aquí el enlace original. La plantilla retocada y adaptada a VS2010 RTM la podéis descargar desde este mismo post aquí, en realidad solamente hay que hacer un cambio de xml namespaces. Una vez descargada eliminar la extensión .txt, e incluirla en el mismo proyecto en el que tengais el archivo EDMX, renombrando la misma sustituyendo $ModelName$ por el nombre de vuestro EDMX.

 

Enlaces de interes

 

http://blogs.msdn.com/b/dmcat/archive/2010/04/21/isolating-performance-with-precompiled-pre-generated-views-in-the-entity-framework-4.aspx

http://blogs.msdn.com/b/adonet/archive/2008/06/20/how-to-use-a-t4-template-for-view-generation.aspx

http://msdn.microsoft.com/en-us/library/bb896240.aspx

http://blogs.msdn.com/b/adonet/archive/2008/02/04/exploring-the-performance-of-the-ado-net-entity-framework-part-1.aspx

 

Saludos

Unai

4 comentarios sobre “EF 4.0 Performance Tips #2”

  1. Hola Unai,

    En una arquitectura en la cual accedemos al modelo de datos a través del contexto (modelo.Context.cs) generado a través de un T4, ¿se pueden utilizar vistas precompiladas de Entity Framework?

    El caso es que hemos generado vistas precompiladas a través de un T4, hemos añadido al proyecto la clase que genera (modelo.Views.cs), y no hemos apreciado mejora en el rendimiento.

    Gracias y Un Saludo,

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *