我正忙着将相当复杂的数据模型从EF5移到EF6,在过程中我注意到EF6(V6.1.0)存在一些严重的性能问题。无论是运行复杂的数据模型还是非常简单的模型,性能问题都是显而易见的。对包含5个表的简单数据模型执行以下测试,每个表包含5列,对包含200个记录的单个表进行排队。机器是i7 3.4Ghz 8GB RAM,SSD。这是.Net 4.5上的控制台应用程序。
// FIRST RUN
var sw = System.Diagnostics.Stopwatch.StartNew();
EFTestContext ctx = new EFTestContext();
var data = ctx.Table1.ToList(); // table with 200 records
ctx.Dispose();
// SECOND RUN
Console.WriteLine(String.Format("Completed in {0}ms", sw.ElapsedMilliseconds));
sw.Restart();
ctx = new EFTestContext();
data = ctx.Table1.ToList();
ctx.Dispose();
Console.WriteLine(String.Format("Completed in {0}ms", sw.ElapsedMilliseconds));
结果如下:
在EF6上生成视图确实可以略微提高性能,但仍然无法接近EF5启动和查询时间。
我一定错过了什么?微软宣布在EF6上进行性能增强(初始化和查询)?我知道在V6.0.0上报告了一些性能问题,但据报道在V6.1.0中已经解决了这些问题?请指教。