CSPAbstractRecord之Teddy's KB样式的性能报告.
在我做CSPAbstractRecord的那段时间,我很关注博客园里的各种ORM的实现方案.
那个时候也有看过Teddy's Knowledge Base的文章:
<<再续NBear性能测试:ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping性能比较[7/26修订:已修复NBearV3的性能问题]>>
http://www.cnblogs.com/teddyma/archive/2007/07/26/831646.html
而我写AR的实现的同时,也根据它的代码, 做了一个性能测试.
虽然这不是最新的测试报告. 但是还是能反映某个角度上的情况的.
测试结果如下:
Compare small read performance of ADO.NET, ADO.NET(BetterWrite), CSPAbstractRecord(NoCacheRead).
Repeat Time = 2
2 2 1
Repeat Time = 5
6 4 3
Repeat Time = 10
9 8 12
Repeat Time = 100
141 117 92
Compare big read performance of ADO.NET, ADO.NET(BetterWrite), CSPAbstractRecord(NoCacheRead).
Repeat Time = 2
94 106 69
Repeat Time = 5
255 233 189
Repeat Time = 10
497 472 391
Repeat Time = 100
4815 4782 3824
Compare write performance of ADO.NET, ADO.NET(BetterWrite), CSPAbstractRecord(NoCacheRead).
Repeat Time = 2
12 10 14
Repeat Time = 5
29 25 33
Repeat Time = 10
61 57 65
Repeat Time = 100
661 555 721
其中BetterWrite是针对里面ADONETPerformanceTest执行INSERT/UPDATE/DELETE的SQL语句的问题的优化.
而NoCacheRead的意思是忽略其中的缓存,让read和big read能公平一点.
我觉得ADONETPerformanceTest这个名字一点都不要. 应该叫DataSetPerformanceTest才不会误导别人.
从这个测试的结果可以看出, 在加载数据方面,CSPAbstractRecord比DataSet要快很多.
而在执行INSERT/UPDATE/DELETE, CSPAbstractRecord比纯SqlClient慢一点. (我觉得Teddy应该再加一个使用SqlDataAdapter的做测试,才公平.)
而对于http://www.cnblogs.com/teddyma/archive/2007/07/26/831646.html里列出的结果,
CSPAbstractRecord在写数据库上的实现的性能已经远远超过该文章中列出的技术: NHibernateV1和NBear各版本.
但是比不上progame的TBP : http://www.cnblogs.com/progame/archive/2007/07/26/orm_performance_test.html
上一篇文章:
<<AbstractRecord 预告. (关键字 ORM,ActiveRecord,DomainModel) >>
http://www.cnblogs.com/Lostinet/archive/2007/08/15/857039.html
里面可能会存在一些误解.
AbstractRecord是一个概念.让程序员编写定义,然后让AR去自动实现它. 我想以后的编程方式很有可能就是这种类型的,程序员用一些代码描述自己的想法,让工具去帮自己实现.
CSPAbstractRecord则是在AbstractRecord的一个实现. 而且已经完成大部分功能.
不过最近我会全力去做一些事情. CSPAbstractRecord的开发会暂停, 一直到10月份左右.
--END--