CYQ.Data 数据层框架CYQ.Data 是一款由路过秋天创作的支持多数据库应用[Txt,Xml,Access,MSSQL,Oracle,SQLite,MySql]的底层数据库操作类库,使用本类库可以轻松快速开发项目(QQ群:6033006)。 |
CYQ.Data 批量添加数据性能测试
框架技术交流区 |
|
|
| #楼主 |
今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,如下图 折腾的种类也不少:
感觉这软件折腾的不错~~~值的期待~~~ 另外,他指出CYQ.Data 在他的软件里表现不佳~~~~ 所以我要了他的测试实例看看是怎么写的测试代码: 测试的过程,大体是开了N个线程,循环N次执行这样的函数。 找到表现不佳的原因,并解决: 中间纷纷绕绕的讲了一些各大ORM测试的实例编写不同问题,不过有一句,倒引起了我的注意,说平均400毫秒左右。 于是我本地测试了一下,结果找出一个小BUG,这个小BUG在每次new MAction时产生个被捕获的小异常,这个小异常不影响使用,但会占用2毫秒时间~~~ 所以整个评测都是不断的new MAction的情况,就是大事件了,这就是整体评测都不佳的原因了。
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类型的比较,就等火晋地同学之文章了。 |
游客[注册][202.105.205.*]2015/4/8 9:19:16 | #2 | |
我想问一下,主从表添加怎样处理 |
游客[注册][61.48.184.*]2013/9/23 0:04:00 | #1 | |
必须用这个框架打天下 |
发表评论
论坛公告
帖子搜索
最新帖子
最新评论
- 请教博主。我mysql的提示 V5.7.7.4 MySql.xxxx:check the tablename "tbl_site_info" is exist? error:ExeDataReader():Expression #1 of ORDER BY clause is not in SELECT list, references column 'information_schema.s1.ORDINAL_POSITION' which is not in SELECT list; this is incompatible with DISTINCT 配置如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Conn" connectionString="host=192.168.3.101;Port=3306;Database=xxxxx;uid=root;pwd=2017" providerName="MySql.Data.MySqlClient"/> </connectionStrings> </configuration>
- 查询语句有点问题,软件启动时查询语句可以从数据库查询出数据,软件一直运行时无论怎么修改数据库,查询出来的还是老数据,不知道是为什么
- 我语句中用到了union all而且两个查询都有查询条件,action.select总是不成功,不知道有没有什么好的解决办法,谢谢
- 大神,如果我想通过一个对象(从数据映射过来的)要插入的话,我需要遍历字段然后每个set一下吗?有没有更好的方法??
- 真心好用,想问下秋天直接拼写sql怕注入吗
- V4.5后,好多方法都改变了,求来个新的日志帮助
- 請問大神V5源碼要多少錢 我是和交流過的
- 楼主,,从数据库里查出来并绑定datagridview,但是显示的都是数据库里的英文名,怎么改??好纠结啊这个。。。。
- 我想问一下,主从表添加怎样处理
- 10年就过了!!!!