快速导航

二维码
  • 文章作者:XPO Team
  • 发布日期:2018/07/17
  • 推荐:

在之前的写过一篇对比测试文章,许多网友留言并提出了问题,今天我们对测试做了更新。

更新内容

之前的测试请看这里

更新的测试代码到这里下载: https://github.com/DevExpress/XpoNetCoreDemos/tree/master/ORMBenchmark

我们测试的ORM库是下面几个,测试环境要求.NET Framework 4.6.1或更高。

  • Entity Framework 6.0.2 (EF 6);
  • Entity Framework Core 2.0.3 (EF Core); 
  • eXpress Persistent Objects™ 18.1.3 (XPO). 

最新的对比测试

  1. EF 基准测试在Fetch, LinqQuery, InstantiationNative和其他类测试中改用AsNoTracking,数据读取时间略有下降,但没有显著下降。
  2. 因为XPO没有类似EF的AsNoTracking,我们创建一个额外的ProjectionLinq基准测试演示每个ORM 加载没有跟踪变化的对象需要花多少时间。
  3. 对于XPO的基准测试,我们设置 IdentityMapBehavior 选择到Strong,它信息我们减少在Identity Map中加载对象的时间。
  4. 通过增强基准测试配置,我们简短的基准测试(如在小数据集上的InstantiationLinq LinqTakeRecords)现在更加精确。

根据Neal的评论,在Fetch基准测试中,我们还使用了Find方法代替First,在某些情况下,它表现出较低的性能,也不影响结果,因此,我们没有改变基准。

Image

所有的基准测试在.NET 4.6.1, AnyCPU release builds, Windows 10 Enterprise x64, local Microsoft SQL Server 2016 Developer Edition, i7-7700 CPU @3.6GHz / 16GB RAM / SSD 上执行。DevExpress.Xpo和其他参考库自动从Nuget上获取。测试时你可能需要编辑App.config中的连接串,更新ORM库或者目标框架。