闲着无聊,测试了一下公司ORM的性能,和其它的ORM相比,该有的都有了,不该有的也勉强塞了进去,总体考虑是并发与扩展性问题,譬如读写分离,消息总线服务整合,缓存内置。

测试机是I7,16G内存,这里只根据测试场景写了最简单的数据库操作测试。

采用了火地晋的测试工具,下面是测试代码

     public class DataTest :ITest
{ public void Init()
{
} public bool Insert()
{
var _repository = new Repository<DbAccessLibTest.Model.Test>();
var model = new DbAccessLibTest.Model.Test();
model.Guid = Guid.NewGuid().ToString();
return _repository.Save(model, DbAccessLibTest.Model.Test._Guid) > ;
} public bool Update(string guid, string content)
{
var _repository = new Repository<DbAccessLibTest.Model.Test>();
var model = new DbAccessLibTest.Model.Test();
model.Content = content;
return _repository.Update(model, DbAccessLibTest.Model.Test._Guid == guid, DbAccessLibTest.Model.Test._Content) > ;
} public System.Data.DataTable Select(int count)
{
var _repository = new Repository<DbAccessLibTest.Model.Test>();
var list = _repository.Find(new QueryWhere(), count);
return null;
} public List<string> GetGuidList(int count)
{
var _repository = new Repository<DbAccessLibTest.Model.Test>();
var list = _repository.Find(new QueryWhere(), count, null, , DbAccessLibTest.Model.Test._Guid);
var guids = new List<string>();
foreach (var test in list)
{
guids.Add(test.Guid);
}
return guids;
} public bool Delete(string guid)
{
var _repository = new Repository<DbAccessLibTest.Model.Test>();
var model = new DbAccessLibTest.Model.Test();
model.Guid = guid;
return _repository.Delete(model) > ;
}
}

大致了解了一下,一下采用10/100/500/1000个线程,10个查询测试,节省时间,直接和ClownFish对比

    Inset Delete Update Select
    平均值 最高 最低 平均值 最高 最低 平均值 最高 最低 平均值 最高 最低
10线程 ClownFish 279 406 221 304 359 268 262 361 158 8 9 7
MyData 475 720 249 527 727 244 462 705 253 10 13 8
100线程 ClownFish 573 1246 154 646 1323 217 365 1117 140 8 22 6
MyData 599 1716 320 730 1899 303 784 1771 291 10 14 8
500线程 ClownFish 7097 22106 225 3691 19673 97 4017 20029 158 9 35 7
MyData 591 1263 181 1416 8583 297 5556 27463 376 10 19 8
1000线程 ClownFish 7967 30946 166 5502 21291 163 6300 28062 145 8 68 6
MyData 606 1242 249 577 2719 203 608 1043 270 10 22 8

总体来看,公司的ORM性能较ClowFish差上20%-50%,但性能较稳定,1000线程测试全部跑完,无异常产生,ClowFish在200线程以内无异常,200线程以后,出现(执行错误,信息:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。)异常,导致执行时间波动较大。

这个测试和原来公司压力测试结果差不多,压力测试公司ORM是直接ado.net执行的1.5倍性能左右。

测试Data ORM的性能的更多相关文章

  1. CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

    前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...

  2. 测试mktime和localtime_r性能及优化方法

    // 测试mktime和localtime_r性能及优化方法 // // 编译方法:g++ -g -o x x.cpp或g++ -O2 -o x x.cpp,两种编译方式性能基本相同. // // 结 ...

  3. loadrunner测试TCP协议服务器性能

    loadrunner测试TCP协议服务器性能 . 性能loadrunner测试c 最近对服务器的性能感兴趣,于是开始研究了一阵子loadrunner如何做采用TCP协议交互的服务器的性能测试,对loa ...

  4. 测试c语言函数调用性能因素之测试三

    函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1,               调用函数帧指针 ...

  5. Webbench、ab命令:做压力测试的工具和性能的监控工具

    DDOS攻击:???DDOS概述:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目 ...

  6. 『性能』测试一下 MSSqlHelper 的性能

    本文没啥技术含量,就是测试一下 MSSqlHelper 在 使用反射.不使用反射 的性能对比. 之后,不要问为什么不用 ORM 这类的东西 —— 会有另外的文章 介绍 自己这些年 自己的ORM 升级历 ...

  7. Mego(1) - NET中主流ORM框架性能对比

    从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问 ...

  8. 运行Delphi XE10的MongoDB例程,测试Delphi插入记录性能

    Delphi XE10支持MongoDB的数据库,提供了个例子restaurants可批量导入数据. 本文对比Delphi例子与MongoDB自带的mongoimport导入批量数据的性能. 步骤: ...

  9. mysqlslap工具测试mysql DB的性能

    mysqlslap的一个主要工作场景就是对数据库服务器做基准测试.     测试方法 1.测试工具:mysqlslap,mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具 ...

随机推荐

  1. 朴素UNIX之-打开历史

    它可以毫不夸张地说,,UNIX模型是现代操作系统的原型.无论是真实的UNIX让我们大系列AIX,Solaris,HP-UX,FreeBSD,NetBSD,...或类别UNIX实例Linux...或基于 ...

  2. C#实现对mongoDB的简单增删查改

    首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置 ...

  3. Unix命令操作

    基本命令 [ man 查看 ]--万能命令 1.ls 列出文件 (-al) 2.cd 转换目录 3.mkdir 建立新目录 4.cp 拷贝文件 (-R) 5.rm 删除文件 (-rf) 6.mv 移动 ...

  4. Windows Phone 8.1 多媒体(2):视频

    原文:Windows Phone 8.1 多媒体(2):视频 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...

  5. 微信公众平台消息接口PHP版开发教程

    原文:微信公众平台消息接口PHP版开发教程  一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: &l ...

  6. PHP 调用微信JS-SDK 开发详解 [网摘]

    一:准备文件,并将文件置于网站根目录下 access_token.json {"access_token":"","expire_time" ...

  7. 条形码(JBarcode)

    一世尘梦 少小离家老大回,妖娆尘世,程序唧唧:问君能有几多愁,恰是满屏BUG无处修. 商品条形码(JBarcode) 之前没有使用过这个,现在使用JBarcode生成商品条形码,工作之前的准备工作: ...

  8. 利用docker搭建yii2 详细步骤

    定位镜像 在hub.docker.com 搜索yii2,并且最后定位到 https://hub.docker.com/r/codemix/yii2-base/codemix/yii2-base 然后在 ...

  9. sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同

    原文:sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同 说明: 以前要将一个表中的数据导出为脚本,只有用存储过程.现在在SQL Server ...

  10. selenium2入门 用selenium安装、加载、启用插件(一)

    一:下载 下载地址是:http://docs.seleniumhq.org/download/