ORM for Net主流框架汇总与效率测试
框架已经被越来越多的人所关注与使用了,今天我们就来研究一下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:
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(, , 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,844ms
Top4:NBear 并发:113,793ms 非并发:223,768ms
Top5:NHibernate 非并发:1,247,572ms
========================================================
修改排行:
Top1:GentleNet 并发:25,985ms 非并发:98,868ms
Top2:iBate 并发:33,366ms 非并发:102,875ms
Top3:SubSonic 并发:36,916ms 非并发:124,844ms
Top4:NBear 并发:113,793ms 非并发:102,821ms
Top5:NHibernate 非并发:279,851ms
========================================================
查询排行:
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,398ms
========================================================
删除排行:
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主流框架汇总与效率测试的更多相关文章
- ORM for Net主流框架汇总
ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法.简单的说就是把数据库的关系型数据类型转换为用对象型程序控制的框架类型. 框架优缺点分析 ...
- tornado 学习笔记2 Python web主流框架
2.1 Django 官方网址:https://www.djangoproject.com/ 简介:Django is a high-level Python Web framework that e ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- 前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...
- golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍
golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- 关于Linux主流框架运维工作剖析
LINUX是开源的,这也是最主要的原因,想学Windows,Unix对不起,没有源代码.也正是因为这样,LINUX才能够像雪球一样越滚越大,发展到现在这种规模.今天将为大家带来关于Linux主流框架运 ...
- ASP.NET Core 企业级开发架构简介及框架汇总 (转载)
ASP.NET Core 企业开发架构概述 企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成 ...
- 前端Js框架汇总(工具多看)
前端Js框架汇总(工具多看) 一.总结 一句话总结: 二.前端Js框架汇总 概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领 ...
随机推荐
- Spark笔记之数据本地性(data locality)
一.什么是数据本地性(data locality) 大数据中有一个很有名的概念就是"移动数据不如移动计算",之所以有数据本地性就是因为数据在网络中传输会有不小的I/O消耗,如果能够 ...
- int,char指针探究
#include<iostream> using namespace std; int main() { /* 思路: 1.关于int指针,不可以直接往指针里传值 例:int *a = 4 ...
- 20165230 《Java程序设计》实验五《网络编程与安全》实验报告
20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...
- 转:存储之直连存储Dell Powervault MD 3000
存储之直连存储DellPowervault MD 3000 存储根据服务器类型可以分为:封闭系统的存储和开放系统的存储 1.封闭系统的存储:封闭系统主要指大型机,AS400等服务器 2.开放系统的存储 ...
- php扩展Redis功能
php扩展Redis功能 1 首先,查看所用php编译版本V6/V9 在phpinfo()中查看 2 下载扩展 地址:https://github.com/nicolasff/phpredis/dow ...
- testng执行用例失败,再次执行
我们通过重写testng的retry方法和transform方法来实现用例失败重跑的功能. 首先添加两个文件 TestngRetry.java public class TestngRetry imp ...
- extjs6入门:用sencha cmd搭建简单的extjs6项目
开发准备 1.sencha cmd安装 2.extjs6.0.0 gpl正式版下载,地址:https://www.sencha.com/legal/gpl/ ,解压ext-6.0.0-gpl.zip ...
- 整理OpenResty+Mysql+Tomcat+JFinal+Cannal+HUI
阿里云运维主机 118.190.89.22 26611 1.CentOS6.9下安装OpenResty 2.CentOS6.9下安装MariaDB10.2.11 3.使用Intellij IDEA把J ...
- PowerDesigner的安装
1.下载 2.步骤 3.效果 二:破解 1.参考文档 https://www.7down.com/soft/180716.html 2.说明 主要是一个文件,替换掉文件中的文件即可.
- Mysql介绍,与将脚本导入新数据库
一:介绍 1.介绍 Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系 ...