框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论)。


ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法。简单的说就是把数据库的关系型数据类型转换为用对象型程序控制的框架类型。


今天研究的orm框架如下:


1.​​NHibernate​​​(使用与介绍)

2.​​iBatis​​​(使用与介绍)

3.​​NBear​​​(使用与介绍:)

4.​​SubSonic​​​(使用与介绍:)

5.​​GentleNet​​​(使用与介绍:)


目录:

1)、效率测试环境介绍。

2)、测试框架简介。

3)、测试CRUD结果表格对比。

4)、测试CRUD排行。

5)、框架优缺点分析。


正文:

1)、效率测试环境介绍。

采用netframework 4.0 Web网站项目,使用Stopwatch进行执行时间统计,使用Parallel对象实现并发操作。为了测试的接近实际型,我执行的时候关掉了电脑上的所有程序,除测试程序,10次相同环境下重复测试10万条数据量的平均值。

测试数据库T-Sql:


create database OrmDB
go
use OrmDB
go
create table OrmTable
(
id int identity primary key,
infoName varchar(250) not null,
infoDesc text not null,
createTime datetime default Convert(varchar(50),getdate(),120)
)
go


2)、测试框架简介。

Stopwatch watch = new Stopwatch();

watch.Start();

Parallel.For(0, 100000, i =>

{

    // ...业务

});

watch.Stop();

Response.Write(watch.ElapsedMilliseconds);

3)、测试CRUD结果表格对比。

添加功能测试表:


操作





添加





数据量(万条)





10w





测试次数





10次





框架名称





GentleNet





NBear



iBate





SubSonic





NHibernate





并发执行时间(ms)





36,731





113,793





36,321





56,342





未测





非并发执行时间(ms)





115,875





223,768





100,719





124,844





1,247,572




修改功能测试表:


操作





修改





数据量(万条)





10w





测试次数





10次





框架名称





GentleNet





NBear





iBate





SubSonic





NHibernate





并发执行时间(ms)





25,985





140,779





33,366





36,916





未测





非并发执行时间(ms)





98,868





279,851





102,875





102,821





1,226,506





查询功能测试表:


操作





查询





数据量(万条)





10w





测试次数





10次





框架名称





GentleNet





NBear





iBate





SubSonic





NHibernate





并发执行时间(ms)





19,776





94,265





39,854





26,784





未测





非并发执行时间(ms)





54,515





157,676





37,339





67,344





1,438,398





删除功能测试表:


操作





删除





数据量(万条)





10w





测试次数





10次





框架名称





GentleNet





NBear





iBate





SubSonic





NHibernate





并发执行时间(ms)





33,802





101,516





31,964





28,223





未测





非并发执行时间(ms)





102,107





211,105





88,420





97,846





1,230,465





4)、CRUD测试排行。

以下为10万条数据的查询排行,单位为毫秒(ms)。

========================================================

增加排行:

Top1:iBate 并发:36,321ms 非并发:100,719ms

Top2:GentleNet 并发:36,731ms 非并发:115,875ms

Top3:SubSonic 并发:56,342ms 非并发:124,844

ms

Top4:NBear 并发:113,793ms 非并发:223,768

ms

Top5:NHibernate 非并发:1,247,572

ms

========================================================

修改排行:

Top1:GentleNet 并发:25,985ms 非并发:98,868ms

Top2:iBate 并发:33,366ms 非并发:102,875

ms

Top3:SubSonic 并发:36,916ms 非并发:124,844

ms

Top4:NBear 并发:113,793ms 非并发:102,821

ms

Top5:NHibernate 非并发:279,851

ms

========================================================

查询排行:

Top1:GentleNet 并发:19,776ms 非并发:54,515ms

Top2:SubSonic 并发:26,784ms 非并发:67,344ms

Top3:iBate 并发:39,854ms 非并发:37,339(非并发下查询效率最高)ms

Top4:NBear 并发:94,265ms 非并发:157,676ms

Top5:NHibernate 非并发:1,438,398

ms

========================================================

删除排行:

Top1:SubSonic 并发:28,223ms 非并发:97,846ms

Top2:iBate 并发:31,964ms 非并发:88,420ms

Top3:GentleNet 并发:33,802ms 非并发:102,107ms

Top4:NBear 并发:101,516ms 非并发:211,105ms

Top5:NHibernate 非并发:1,230,465ms

========================================================

5)、框架优缺点分析。

Gentle.Net

优点:支持t-sql,语法简单方便,效率高。

缺点:依赖代码生成器生成每个实体类。


iBatis

优点: 效率比较高,尤其是非并发下效果很高,比较稳定。

缺点:配置文件比较多,t-sql在每个配置文件里面写,条件查询比较麻烦。


SubSonic

优点:删除和查询效果很好,添加比较慢。

缺点:语法比较接近Linq,语法自成一派比较不满意。


NHibernate

优点:覆盖功能比较全,稳定性好,集成性能好,使用比较广泛,支持t-sql和hql语法。

缺点:配置比较多,比较麻烦,效率比较慢。


NBear

优点:配置最简单。

缺点:操作语法不成熟,不支持t-sql,使用起来不方便,已经很久没有更新了。


ps:大家根据测试的结果自行选择合适的框架。


关注下面二维码,订阅更多精彩内容。

ORM for Net主流框架汇总与效率测试_hibernate