Estoy usando EF6
y el esquema de 163 entidades que se generan primero desde Oracle.
Estoy midiendo los tiempos de inicialización y el tiempo para obtener 100 registros de la tabla indexada.
C# Prueba
var times = new List<Tuple<DateTime, DateTime, DateTime>>();
var carTypes = new List<CAR_TYPE>();
var j = 1;
while (j <= 10000)
{
for (int i = 0; i < j; i++)
{
var startTime = DateTime.Now;
using (var db = new EcomEntities())
{
var contextInitializationTime = DateTime.Now;
carTypes = db.CAR_TYPE.Take(100).ToList();
var executionTime = DateTime.Now;
times.Add(new Tuple<DateTime, DateTime, DateTime>(startTime, contextInitializationTime, executionTime));
}
}
var averageInitTime = times.Average(o => o.Item2.Subtract(o.Item1).TotalMilliseconds);
var averageRunTime = times.Average(o => o.Item3.Subtract(o.Item1).TotalMilliseconds);
Debug.WriteLine("averageInitTime - " + j + " " + averageInitTime);
Debug.WriteLine("averageRunTime - " + j + " " + averageRunTime);
j = j*10;
}
Resultados:
Runs MS Runs MS
+------------------+-------+----------+-----------------+-------+----------+
| averageInitTime | 1 | 134.0134 | averageRunTime | 1 | 1719.172 |
+------------------+-------+----------+-----------------+-------+----------+
| averageInitTime | 10 | 12.27395 | averageRunTime | 10 | 160.3797 |
+------------------+-------+----------+-----------------+-------+----------+
| averageInitTime | 100 | 1.540695 | averageRunTime | 100 | 19.94794 |
+------------------+-------+----------+-----------------+-------+----------+
| averageInitTime | 1000 | 0.281756 | averageRunTime | 1000 | 6.121224 |
+------------------+-------+----------+-----------------+-------+----------+
| averageInitTime | 10000 | 0.167058 | averageRunTime | 10000 | 4.751353 |
+------------------+-------+----------+-----------------+-------+----------+
Buena pregunta. Algunas personas mencionan la generación de vistas para aumentar el rendimiento mientras se crea el contexto, pero no tengo idea si el rendimiento se acelera durante la primera ejecución de la aplicación o durante cada creación de ObjectContext. – kubal5003