测试Data ORM的性能

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

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

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

 1     public class DataTest :ITest
 2     {
 3 
 4         public void Init()
 5         {
 6         }
 7 
 8         public bool Insert()
 9         {
10             var _repository = new Repository<DbAccessLibTest.Model.Test>();
11             var model = new DbAccessLibTest.Model.Test();
12             model.Guid = Guid.NewGuid().ToString();
13             return _repository.Save(model, DbAccessLibTest.Model.Test._Guid) > 0;
14         }
15 
16         public bool Update(string guid, string content)
17         {
18             var _repository = new Repository<DbAccessLibTest.Model.Test>();
19             var model = new DbAccessLibTest.Model.Test();
20             model.Content = content;
21             return _repository.Update(model, DbAccessLibTest.Model.Test._Guid == guid, DbAccessLibTest.Model.Test._Content) > 0;
22         }
23 
24         public System.Data.DataTable Select(int count)
25         {
26             var _repository = new Repository<DbAccessLibTest.Model.Test>();
27             var list = _repository.Find(new QueryWhere(), count);
28             return null;
29         }
30 
31         public List<string> GetGuidList(int count)
32         {
33             var _repository = new Repository<DbAccessLibTest.Model.Test>();
34             var list = _repository.Find(new QueryWhere(), count, null, 0, DbAccessLibTest.Model.Test._Guid);
35             var guids = new List<string>();
36             foreach (var test in list)
37             {
38                 guids.Add(test.Guid);
39             }
40             return guids;
41         }
42 
43         public bool Delete(string guid)
44         {
45             var _repository = new Repository<DbAccessLibTest.Model.Test>();
46             var model = new DbAccessLibTest.Model.Test();
47             model.Guid = guid;
48             return _repository.Delete(model) > 0;
49         }
50   }
View Code

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

  InsetDeleteUpdateSelect
  平均值最高最低平均值最高最低平均值最高最低平均值最高最低
10线程ClownFish279406221304359268262361158897
MyData47572024952772724446270525310138
100线程ClownFish5731246154646132321736511171408226
MyData59917163207301899303784177129110148
500线程ClownFish709722106225369119673974017200291589357
MyData59112631811416858329755562746337610198
1000线程ClownFish7967309461665502212911636300280621458686
MyData60612422495772719203608104327010228

 

 

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

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

 

 

 

转载于:https://www.cnblogs.com/keo2013/p/3322027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值