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

简介: 框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论)。 ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法。

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


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


今天研究的orm框架如下:

1.NHibernate(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/15/2177830.html)

2.iBatis(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/26/2192155.html)

3.NBear(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/21/2184376.html)

4.SubSonic(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/22/2185152.html)

5.GentleNet(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/16/2179157.html)


目录:

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

2)、测试框架简介。

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

4)、测试CRUD排行。

5)、框架优缺点分析。


正文:

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

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

测试数据库T-Sql

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 测试数据库与表
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)。

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

增加排行:

Top1iBate 并发:36,321ms 非并发:100,719ms

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

Top3SubSonic 并发:56,342ms 非并发:124,844

ms

Top4NBear 并发:113,793ms 非并发:223,768

ms

Top5NHibernate 非并发:1,247,572

ms

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

修改排行:

Top1GentleNet 并发:25,985ms 非并发:98,868ms

Top2iBate 并发:33,366ms 非并发:102,875

ms

Top3SubSonic 并发:36,916ms 非并发:124,844

ms

Top4NBear 并发:113,793ms 非并发:102,821

ms

Top5NHibernate 非并发:279,851

ms

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

查询排行:

Top1GentleNet 并发:19,776ms 非并发:54,515ms

Top2SubSonic 并发:26,784ms 非并发:67,344ms

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

Top4NBear 并发:94,265ms 非并发:157,676ms

Top5NHibernate 非并发:1,438,398

ms

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

删除排行:

Top1SubSonic 并发:28,223ms 非并发:97,846ms

Top2iBate 并发:31,964ms 非并发:88,420ms

Top3GentleNet 并发:33,802ms 非并发:102,107ms

Top4NBear 并发:101,516ms 非并发:211,105ms

Top5NHibernate 非并发:1,230,465ms

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

5)、框架优缺点分析。

Gentle.Net

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

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


iBatis

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

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


SubSonic

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

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


NHibernate

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

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


NBear

优点:配置最简单。

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


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

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
4月前
|
缓存 数据库连接 API
Entity Framework Core——.NET 领域的 ORM 利器,深度剖析其最佳实践之路
【8月更文挑战第28天】在软件开发领域,高效的数据访问与管理至关重要。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)工具,在 .NET 开发中扮演着重要角色。本文通过在线书店应用案例,展示了 EF Core 的核心特性和优势。我们定义了 `Book` 实体类及其属性,并通过 `BookStoreContext` 数据库上下文配置了数据库连接。EF Core 提供了简洁的 API,支持数据的查询、插入、更新和删除操作。
127 0
|
C# Windows .NET
带你读《C# 7.0核心技术指南》之一:C#和.NET Framework简介
本书前三章将集中介绍C#语言。首先介绍最基本的语法、类型和变量。而后会介绍一些高级的特性,如不安全代码以及预处理指令。其余各章则涵盖了.NET Framework的核心功能,包括LINQ、XML、集合、并发、I/O和网络、内存管理、反射、动态编程、特性、安全、应用程序域和原生互操作性等主题。第6章和第7章是后续主题的基础,除这两章之外,其余各章可以按照需要以任何顺序阅读。LINQ相关的三个章节最好按顺序阅读。其中的一些章节需要一些并发相关的知识,这些知识将在第14章中介绍。
|
XML C# 数据格式
一起谈.NET技术,从数据到代码—基于T4的代码生成方式
  在之前写一篇文章《从数据到代码》(上篇、下篇)中,我通过基于CodeDOM+Custom Tool的代码生成方式实现了将一个XML表示的消息列表转换成了相应的C#代码,从而达到了强类型编程的目的。实际上,我们最常用的代码生成当时不是CodeDOM,而是T4,这是一个更为强大,并且适用范围更广的代码生成技术。
1030 0
在.NET Workflo“.NET研究”w 3.5中使用多线程提高工作流性能
  最近在工作上碰到一个性能问题,由于项目是基于SOA的架构,使得整个系统完全依赖于各种各样的Serv上海闵行企业网站制作ice,其中用于处理业务逻辑的Business Services全部都用.NET Workflow 3.5实现(历史原因,项目还没升级到Workflow 4)。
953 0
|
.NET
一起谈.NET技术,.NET框架:为什么我们要尽量使用框架内建的功能,而不是重新发明
  有很多人经常会持有这样的疑问:为什么 .NET 框架要把一些很简单的功能也封装起来?而有些人所坚持的“有现成的就用现成的”的习惯在那些“明明只是很简单的功能却被封装了起来”的情况下也显得很可笑。那么,实际上到底有没有必要用那些本来就很简单的封装?这些简单的封装到底具有什么样的意义呢?   其实大部分这样的简单的封装都是针对“跨平台使用”而设计的。
956 0
|
缓存 .NET 测试技术
一起谈.NET技术,C# 4动态编程新特性与DLR剖析
近几年来,在TIOBE 公司每个月发布的编程语言排行榜 [1] 中,C# 总是能挤进前10 名,而在近10 年的编程语言排行榜中,C# 总体上呈现上升的趋势。C# 能取得这样的成绩,有很多因素在起作用,其中,它在语言特性上的锐意进取让人印象深刻( 图1 )。
2018 0
|
SQL .NET 数据库
.NET 分布式架构开发“.NET研究”实战之三 数据访问深入一点的思考
  前言:   首先,感谢朋友们对文章的支持,感谢大家,希望本系列的文章能够真正的对大家起到一点帮助的作用。再次感谢大家。   大家也许想问,什么时候出代码,代码一定会出的,我不想一上来就开始抛出一大堆的代码,然后讲解,架构的设计在思考的过程,思考到了,代码也就水到渠成了。
1142 0
|
.NET
.NET框架:为什么我们要尽量使用框架内建的功能,“.NET研究”而不是重新发明
  有很多人经常会持有这样的疑问:为什么 .NET 框架要把一些很简单的功能也封装起来上海企业网站制作?而有些人所坚持的“有现成的就用现成的”的习惯在那些“明明只是很简单的功能却被封装了起来”的情况下也显得很可笑。
976 0
|
Web App开发 前端开发 JavaScript
在MVC2.0使用Lo“.NET研究”dop为WEB打印提出完美解决方案
  通过好友CallHot介绍Lodopweb打印控件。由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用。现将学习成果与园友分享。如果存在不足的地方,希望您指出。   具体的实现步骤如下:   一、准备工作    1.MVC2.0 + jQuery1.4.1 开发环境。
1325 0