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在各领 ...
随机推荐
- CSS 实现图片灰度效果
非原创-从网上收索出来的文章 CSS实现图片灰度效果就是通过CSS样式让彩色图片呈现为灰色,相当于把一张图像的颜色模式调整为灰度,CSS可以通过以下几种方法来实现灰度效果. 方式1. IE滤镜 img ...
- Memcached命令:简单获取缓存value用法
Memcached:命令用法1.cmd 输入telnet ip 端口 进入memcached服务端窗口比如:xxx.Token_T1435622096xxx为key获取此key的memcached ...
- lucene修改索引——(六)
原理: 修改的原理是先删除,后增加一个,这也是常用的一种修改的方式. 删除的文档的id不会被新增加的文档占用,类似于mysql的自增,当删除一个id=2时,以后id=2就是空着的,不会上来一个把2给占 ...
- 基于Disruptor并发框架的分类任务并发
并发的场景 最近在编码中遇到的场景,我的程序需要处理不同类型的任务,场景要求如下: 1.同类任务串行.不同类任务并发. 2.高吞吐量. 3.任务类型动态增减. 思路 思路一: 最直接的想法,每有一个任 ...
- BGM时长
1.can u feel it 00:08-00:30 22s 2.纤夫的爱 00:43-00:54 11s 3.渡情 00:55-01:52 57s 4.nobody 01:56-02:25 29s ...
- php的递归函数示例
递归函数太难理解了,写了一个示例放在这里方便没事的时候看一下. <?php /** *php递归函数示例 *(从1到100的累加和计算) * */ function summation($num ...
- Google-Guice入门介绍
原地址:http://blog.csdn.net/derekjiang/article/details/7231490 一. 概述 Guice是一个轻量级的DI框架.本文对Guice的基本用法作以介绍 ...
- net MongoDB安装
Mongo服务器端下载链接:https://www.mongodb.com/download-center?jmp=nav 客户端查看工具Mongovue工具下载链接:http://pan.baidu ...
- python之Anaconda版本管理
首先安装Anaconda,当其安装成功后,可以在cmd中测试是否安装成功,conda --version conda的环境管理 Conda的环境管理功能允许我们同时安装若干不同版本的Python,并能 ...
- Smarty 模板引擎简介
前言 Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑 ...