나는 오라클에서 처음 생성 된 db 인 163 엔터티의 스키마와 EF6
을 사용하고 있습니다.
측정 중 인덱싱 된 테이블에서 100 개의 레코드를 가져 오는 초기화 시간과 시간.
C# 테스트
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;
}
결과 :
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 |
+------------------+-------+----------+-----------------+-------+----------+
좋은 질문입니다. 일부 사람들은 컨텍스트를 만드는 동안 성능을 향상시키기 위해 뷰를 생성한다고 언급하지만, 응용 프로그램이 처음 실행되는 동안 또는 ObjectContext를 한 번 만들 때마다 성능에 영향이 있는지 전혀 알 수 없습니다. – kubal5003