下载测试示例程序说明:本测试使用SqlServer2000的Northwind数据库的Categories、Customers和Products三个表,测试比较ADO.NET、NBear和NHibernate的读写性能。公平起见,测试代码并没有使用太多特别框架的独有功能或缓存,在实际测试前分别都进行了预读(保证元数据等都在第一次运行时已载入)。
读测试每次循环分别读取Categories、Customers和Products三个表的全部数据,三个组件分别返回DataSet,强类型实体数组和IList,虽然返回的数据类型不同,但是,实际上都包括了对返回数据的填充操作,因此,应该是相对公平的。结果显示NBear的性能近似于ADO.NET;NHibernate的独性能要差5倍左右。
写测试每次循环分别新建、更新并删除Categories、Customers和Products三个表中的各一条记录。ADO.NET由于是直接执行SQL的,速度最快是肯定的。NBear相比ADO.NET慢约3倍,NHibernate则大约慢2倍。
鉴于一般的系统读操作的频率远高于写操作,NBear的平均性能应该要比NHibernate好处不少。
测试并不完全,仅作参考。
Read Performance Comparison
| Repeat Times |
ADO.NET (ms) |
NBear (ms) |
NHibernate (ms) |
| 1 |
218 |
234 |
1140 |
| 2 |
484 |
515 |
3812 |
| 5 |
1109 |
1218 |
6078 |
| 10 |
2218 |
2484 |
12390 |
Write Performance Comparison
| Repeat Times |
ADO.NET (ms) |
NBear (ms) |
NHibernate (ms) |
| 20 |
125 |
312 |
234 |
| 40 |
203 |
656 |
437 |
| 100 |
546 |
1609 |
1046 |
| 200 |
984 |
3046 |
2015 |