使用EF做一个简单的查询比使用hibernate快15倍.为什么?

本文关键字:hibernate 为什么 15倍 查询 EF 简单 一个 使用 | 更新日期: 2023-09-27 17:54:34

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

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

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

MySQL。EF5, NHibernate 3.3。

使用EF做一个简单的查询比使用hibernate快15倍.为什么?

我看不出测试中使用的查询有什么问题。这个测试的问题是它测量了一个在NHibernate的目标用例之外的批量处理操作。

而且,NHibernate并没有把性能作为最高目标,它不应该仅仅根据这个参数来评估。也就是说,如果性能是您唯一最重要的因素,那么您最好使用更简单的东西。

从我使用NHibernate的经验来看,问题是,ISessionFactory需要最多的时间来创建。所有的映射都在这里完成,缓存初始化等等。

与EF相比,NHibernate的查询方式也不同。EF编译"Linq"表达式树,并基于使用的驱动程序构建SQL语句。

在NHibernate中,你自己用自己的语法编写查询。

这就是我的经历。