ORMBattle : Entity Framework 4 VS NHibernate 3

公司下一个项目要在EF和NH之间做一个抉择。网上关于二者优劣的文章一搜一大把。本文仅提供ORMBattle测试套件下二者最新版本的比较。

首先给出我修改过的测试套件,包含结果。

修改点如下

  • 删掉了DataObject.Net相关的测试,因为我没有license
  • 升级NH到最新的NH3,测试用的Context类不继承任何基类直接使用Session.Query(而基于NH2.1.2的测试套件里继承了NHibernate.Linq 2.1.2的NHibernateContext)
  • 把根目录下的Output.txt替换为了我的测试结果,只包含了EF和NH
  • _Documents\ORMBattle.NET Test Results.xlsm替换为了我的测试结果,只包含了EF和NH

关于测试有如下几点说明

  • 目前EF4.1RC已经发布。但由于测试套件中提供的EFModel没有使用Code First模式,所以用不到4.1的新能力,我也就没有引用4.1的EntityFramework.dll
  • NH3的lazy load的provider我选择了Castle,虽然不知这个测试套件会不会用到= =
  • 性能测试我也参照官网取了1000 items那组数据,全部数据可以参考Output.txt
  • 测试环境是
    • Workstation  DELL OPTIPLEX 780
    • OS               Windows 7 Enterprise (32 bit)
    • Processor      Intel Core 2 Q8400
    • Memory        2G
    • DB               SQL Server 2008 Sp1

数据不贴了,直接上图,全都是more is better

image

 

imageimage

 

imageimage

 

imageimage

 

对比官网上NH2.1.2的数据,发现NH3在Linq支持上还是有长足进步的。当然比EF还差很远就是。

后面的性能测试,基本上要算比EF差(虽然有些项目占优)。

 

最后,本文的结果仅作参考。网上喷这个测试套件的很多,所以本文也请随意喷。

[UPDATE]更新NH到了3.1.0GA,算是略有进展(?)

posted @ 2011-03-18 17:11  jiaxingseng  阅读(4329)  评论(12编辑  收藏  举报