zoukankan      html  css  js  c++  java
  • 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(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,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:大家根据测试的结果自行选择合适的框架。

  • 相关阅读:
    你不得不知道的Visual Studio 2012(2) 全新调试功能
    我看TechEd 2012之App时代降临
    Asp.Net MVC4入门指南(1): 入门介绍
    前端代码标准最佳实践:CSS篇
    Asp.Net MVC4入门指南(2):添加一个控制器
    你不得不知道的Visual Studio 2012(1) 每日必用功能
    Asp.Net MVC4入门指南(4):添加一个模型
    光棍节程序员闯关秀过关全攻略(附带小工具)
    C#性能优化实践
    Asp.Net MVC4入门指南(3):添加一个视图
  • 原文地址:https://www.cnblogs.com/tuyile006/p/3564519.html
Copyright © 2011-2022 走看看