今天有网友火晋地同窗进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,以下图数据库
折腾的种类也很多:编程
感受这软件折腾的不错~~~值的期待~~~框架
另外,他指出CYQ.Data 在他的软件里表现不佳~~~~函数
因此我要了他的测试实例看看是怎么写的测试代码:性能
测试的过程,大致是开了N个线程,循环N次执行这样的函数。测试
找到表现不佳的缘由,并解决:编码
中间纷纷绕绕的讲了一些各大ORM测试的实例编写不一样问题,不过有一句,倒引发了个人注意,说平均400毫秒左右。spa
因而我本地测试了一下,结果找出AOP读取配置文件的一个小BUG,这个小BUG在每次new MAction时产生个被捕获的小异常,这个小异常不影响使用,但会占用2毫秒以上时间~~~线程
因此整个评测都是不断的new MAction的状况,就是大事件了,这就是总体评测都不佳的缘由了。code
OK,修正这个小Bug后,下面来演示一下批量插入功能:
看看1万条数据,插入须要多长时间:
数据库为MSSQL 2005 CPU为i3,4G内存,数据表Consumer共4个字段。
每一个示例先后都会truncate table Consumer;
第一种编码方法:经过不断的new MAction来实现插入,1万条用了6秒多,平均每秒插入1600条左右:
第二种编码方法:把for往里面移动,先不开启事务,1万条用了4秒多,平均每秒插入2500条左右:
第三种编码码方式,开启启事务呢,1万条用了2秒多,平均每秒插入4000条左右:
第四种编码方式:使用MDataTable的实现批量插入,1万条用了0.6秒多,平均每秒插入2万条左右:
事实上,时间是花在数据的实体转Table的过程,若是把这一块时间分出,只计算数据库批量插入的时间:
10万条用了0.8秒多,平均每秒插入10万条以上:
总结:
今天的测试,仅是作为样式供参考,不一样的编码方式,实际上产生的性能点不一样的,根据项目须要编程才是重点。
从07年开始写ORM框架,大大小小的框架写过很种风格,但真正的精华做品,却仅此一种。
另外其它多种ORM类型的比较,就等火晋地同窗之文章了。