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:

测试数据库与表

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:大家根据测试的结果自行选择合适的框架。

时间: 2024-10-08 20:26:52

ORM for Net主流框架汇总与效率测试的相关文章

移动开发主流框架的选取以及技术选型方案解析

传统的移动开发模式主要分为三种,Native App,Web App 和 Hybrid App,对于目前微信端比较火爆的开发平台小程序,或者其他厂商推广的流应用.轻应用等开发方式,基本都离不开H5的支撑.目前App前端开发主流框架RN,Ionic,Vue都发展得不错.但是业务需求的快速发展,有些框架并不能够满足他们的需求,在不同的业务场景,受诸多约束因素的影响,研发团队应该如何在前端框架上做好选型? 根据目前51CTO社群(群号312724475)中大部分移动开发领域的开发者实际项目经验,我们邀

十分钟搭建主流框架_下拉/上拉刷新数据(OC)

本节主题(网络部分-下拉/上拉刷新) 源码地址在文章末尾 达成效果 下拉刷新数据 上拉加载更多数据 前言 经过十分钟搭建主流框架_简单的网络部分(OC)的介绍,相信你已经实现了基本的联网获取数据,但只是粗糙的获取了固定的数据,下面就让我们来实现下拉刷新和上拉加载更多吧.同样,我们先来做准备工作吧. 准备工作 Github寻找优秀的第三方刷新框架 1.前人种树,后人乘凉.有优秀的第三方框架可以使用,当然是极好的,可以大大提高我们的开发效率,如有特殊需求只能自己手写就除外了 Refresh 2.查阅

详解Android主流框架不可或缺的基石

自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理

关于Linux主流框架运维工作剖析

LINUX是开源的,这也是最主要的原因,想学Windows,Unix对不起,没有源代码.也正是因为这样,LINUX才能够像雪球一样越滚越大,发展到现在这种规模.今天将为大家带来关于Linux主流框架运维工作剖析,大家一定要认真阅读哦~ 随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS.RedHat.Ubuntu.Fedora等等,成千上亿个网站涌现在当今互联网,互联网已经成为必不可少的工具,那今天我们跟大家一起来分享讨论目前用的最

各类主流框架及设计模式简介

1,使用框架技术的优势:1)不用考虑公共问题,框架已经为我们做好了2)可以专心在业务逻辑上,保证核心业务逻辑的开发质量3)结构统一,便于学习,维护4)最重要的一点:框架中集成了前人的经验,可以帮助新手写出稳健.性能优良而且结构优美的高质量程序:2,什么是框架:框架(Framework)是一个提供了可重用的公共结构的半成品.一方面提供了可以拿来就用的工具,也提供了可重用的设计:框架使混乱的东西变得结构化:框架是一组协同工作的组件:3,java中的主流框架:1)Struts框架:是MVC设计模式的体

搭建App主流框架_纯代码搭建(OC)

转载自:http://my.oschina.net/hejunbinlan/blog/529778?fromerr=EmSuX7PR 搭建主流框架界面 源码地址在文章末尾 达成效果 效果图 注:本文部分图标及效果图来自[IT江湖] https://github.com/itjhDev/itjh 导读 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是讨论主体框架的搭建,数据暂时没有添

IOS开发——UI进阶篇(十三)UITabBarController简单使用,qq主流框架

一.UITabBarController简单使用 // 程序加载完毕 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 创建窗口 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 设置窗口的根控制器 UITabB

Java三大主流框架概述

Java三大主流框架概述 邮箱:[email protected] Struts.Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案.但你是否知道,这些知名框架最初是怎样产生的?我们知道,传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的JSP.负责流程逻辑控制的Servlet以及负责数据封装的Javabean.但是这种结构仍然存

Android通用流行框架汇总

概述 1. 缓存 名称 名称 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 3. 图片处理 名称 描述 Picasso-transformations 一个为Picasso提供多种图片变换的库 Glide-transformat