使用EF进行简单查询比使用Nhibernate快1秒。为什么?

时间:2013-01-18 23:14:34

标签: c# performance entity-framework nhibernate

我认为NHibernate比EF更快。但是这段代码告诉我,EF约为1s,但Nhibernate约为2~4s。查询有什么问题吗?

要点链接:https://gist.github.com/d271f4ca0276cca7d481

这是一个单独的表,没有链接,与其他人无关,但只有300k行数据。

MySQL.EF5,NHibernate 3.3。

2 个答案:

答案 0 :(得分:1)

我可以看到测试中使用的查询没有错。测试的关键是它测量批量处理操作,这是NHibernate的目标用例之外的。

此外,NHibernate没有将性能作为最高目标,并且不应仅对该参数进行评估。也就是说,如果性能是你最重要的因素,那么你可能会更简单一些。

答案 1 :(得分:0)

根据我对NHibernate的经验,问题是,ISessionFactory需要最多的时间来创建。有所有映射,缓存初始化等等。

使用NHibernate进行查询的方式与EF不同。 EF编译“Linq” - 表达式树,并根据使用的驱动程序构建SQL语句。

在NHibernate中,您可以使用自己的语法自己编写查询。与EF相比,这更慢。

这是我的经历。也许其他人可以深入探讨。