ADO和ORM的性能比较

ADO和ORM的性能比较

(2010-01-13 13:49:00)
标签:

杂谈

分类: 谈谈技术
测试目的:
比较ADO.NET和ORM在操作数据时的性能。由于Ado.Net直接操作数据库,性能开销最小;而ORM架构大多使用反射来获取对象属性,然后映射成数据字段,或者反过来把字段映射成属性,反射有性能上的开销。所以,本测试也说明了反射对性能的影响。
 
环境:
使用Client/Server架构测试。
数据库Server:Ms SQL 2005
数据库:WenDa
数  据:三张表,每张表1000条数据
 
Client环境:hp笔记本电脑,基本配置【CPU 1.66GHz/Mem 2.5G】
 
测试用例
1. 查询:查询3张表的全部记录
2. 更新:对3张表分别执行:
   a)插入一条记录
   b)更新一条记录
   c)删除一条记录
 
结果:
结果说明:【已经禁止了iBatis和NH的Cache】
ADO:使用ADO.NET来操作数据库,纯粹的SQL,没有对象
Ado.Object:使用Ado.Net操作数据库,然后转换为Domain对象
iBatis:使用iBatis.Net架构,运用反射来操作Domain对象
NH:使用NHibernate架构,运用反射来操作Domain对象
 
循环次数:是指for循环的次数,在每个循环中调用用例
得出的值:是运行的时间,单位是ms
 
查询结果比较:
次序 循环次数 ADO Ado.Object iBatis NH
1 10 381 444 446 748
2 20 765 910 932 1406
3 50 1938 2260 2247 3450
4 100 3817 4395 4546 6839
5 150 5791 6597 6843 10227
6 170 6475 7325 7585 11449
7 230 8816 9988 10372 15536
8 290 11178 12362 12796 19884
9 400 15673 17461 18177 27188
10 550 21521 23467 25480 37234
11 800 31013 35636 36227 54157
 AdoORM-Read
 
更新结果比较:
次序 循环次数 ADO Ado.Object iBatis NH
1 10 103 103 204 257
2 20 257 257 248 511
3 50 472 472 631 1263
4 100 1639 1639 1714 2600
5 150 1869 1869 2796 3838
6 170 2690 2690 2871 4269
7 230 3155 3155 4150 5764
8 290 4236 4236 5087 7315
9 400 6132 6132 7175 10424
10 550 8259 8259 9301 14159
11 800 12206 12206 13633 20405
 
AdoORM-Write
 
综合比较:
  ADO Ado.Object iBatis NH
read 38.76101083 43.62635379 45.36137184 67.91263538
write 14.80794224 14.80794224 17.2599278 25.56137184
avg 29.61093863 32.61772058 34.62662022 51.73445271
 
AdoORM-Sum
 
结论:
ADO >> Ado.Object ≈ iBatis >> NHibernate
 
1. 反射的影响不大,基本上微不足道
2. NHibernate性能低,是因为级联查询和更新
posted @ 2013-07-06 19:41  xust  阅读(1443)  评论(0)    收藏  举报