ORM for Net主流框架汇总与效率测试
框架已經被越來越多的人所關注與使用了,今天我們就來研究一下net方面的幾個主流ORM框架,以及它們的效率測試(可能會有遺漏歡迎大家討論)。
?
ORM框架:Object/Relation?Mapping(對象/關系?映射)的縮寫,易于理解的模型化數據的方法。簡單的說就是把數據庫的關系型數據類型轉換為用對象型程序控制的框架類型。
?
今天研究的orm框架如下:
1.NHibernate(使用與介紹:http://www.cnblogs.com/stone_w/archive/2011/09/15/2177830.html)
2.iBatis(使用與介紹:http://www.cnblogs.com/stone_w/archive/2011/09/26/2192155.html)
3.NBear(使用與介紹:http://www.cnblogs.com/stone_w/archive/2011/09/21/2184376.html)
4.SubSonic(使用與介紹:http://www.cnblogs.com/stone_w/archive/2011/09/22/2185152.html)
5.GentleNet(使用與介紹:http://www.cnblogs.com/stone_w/archive/2011/09/16/2179157.html)
?
?
目錄:
1)、效率測試環境介紹。
2)、測試框架簡介。
3)、測試CRUD結果表格對比。
4)、測試CRUD排行。
5)、框架優缺點分析。
?
正文:
1)、效率測試環境介紹。
采用netframework?4.0?Web網站項目,使用Stopwatch進行執行時間統計,使用Parallel對象實現并發操作。為了測試的接近實際型,我執行的時候關掉了電腦上的所有程序,除測試程序,10次相同環境下重復測試10萬條數據量的平均值。
測試數據庫T-Sql:
?
create database OrmDBgo
use OrmDB
go
create table OrmTable
(
id int identity primary key,
infoName varchar(250) not null,
infoDesc text not null,
createTime datetime default Convert(varchar(50),getdate(),120)
)
go
2)、測試框架簡介。
?
Stopwatch watch = new Stopwatch();watch.Start();Parallel.For(0, 100000, i =>{// ...業務 });watch.Stop();Response.Write(watch.ElapsedMilliseconds);?
3)、測試CRUD結果表格對比。
添加功能測試表:
| 操作 | 添加 | ||||
| 數據量(萬條) | 10w | ||||
| 測試次數 | 10次 | ||||
| 框架名稱 | GentleNet | NBear | iBate | SubSonic | NHibernate |
| 并發執行時間(ms) | 36,731 | 113,793 | 36,321 | 56,342 | 未測 |
| 非并發執行時間(ms) | 115,875 | 223,768 | 100,719 | 124,844 | 1,247,572 ? |
?
?
修改功能測試表:
| 操作 | 修改 | ||||
| 數據量(萬條) | 10w | ||||
| 測試次數 | 10次 | ||||
| 框架名稱 | GentleNet | NBear | iBate | SubSonic | NHibernate |
| 并發執行時間(ms) | 25,985 | 140,779 | 33,366 | 36,916 | 未測 |
| 非并發執行時間(ms) | 98,868 | 279,851 | 102,875 | 102,821 | 1,226,506 |
?
?
查詢功能測試表:
| 操作 | 查詢 | ||||
| 數據量(萬條) | 10w | ||||
| 測試次數 | 10次 | ||||
| 框架名稱 | GentleNet | NBear | iBate | SubSonic | NHibernate |
| 并發執行時間(ms) | 19,776 | 94,265 | 39,854 | 26,784 | 未測 |
| 非并發執行時間(ms) | 54,515 | 157,676 | 37,339 | 67,344 | 1,438,398 |
?
?
刪除功能測試表:
| 操作 | 刪除 | ||||
| 數據量(萬條) | 10w | ||||
| 測試次數 | 10次 | ||||
| 框架名稱 | GentleNet | NBear | iBate | SubSonic | NHibernate |
| 并發執行時間(ms) | 33,802 | 101,516 | 31,964 | 28,223 | 未測 |
| 非并發執行時間(ms) | 102,107 | 211,105 | 88,420 | 97,846 | 1,230,465 |
?
?
4)、CRUD測試排行。
以下為10萬條數據的查詢排行,單位為毫秒(ms)。
========================================================
增加排行:
Top1:iBate?并發:36,321ms?非并發:100,719ms
Top2:GentleNet?并發:36,731ms?非并發:115,875ms
Top3:SubSonic?并發:56,342ms?非并發:124,844ms
Top4:NBear?并發:113,793ms?非并發:223,768ms
Top5:NHibernate?非并發:1,247,572ms
?
========================================================
修改排行:
Top1:GentleNet?并發:25,985ms?非并發:98,868ms
Top2:iBate?并發:33,366ms?非并發:102,875ms
Top3:SubSonic?并發:36,916ms?非并發:124,844ms
Top4:NBear?并發:113,793ms?非并發:102,821ms
Top5:NHibernate?非并發:279,851ms
?
========================================================
查詢排行:
Top1:GentleNet?并發:19,776ms?非并發:54,515ms
Top2:SubSonic?并發:26,784ms?非并發:67,344ms
Top3:iBate?并發:39,854ms?非并發:37,339(非并發下查詢效率最高)ms
Top4:NBear?并發:94,265ms?非并發:157,676ms
?
?
Top5:NHibernate?非并發:1,438,398ms
?
========================================================
刪除排行:
Top1:SubSonic?并發:28,223ms?非并發:97,846ms
Top2:iBate?并發:31,964ms?非并發:88,420ms
Top3:GentleNet?并發:33,802ms?非并發:102,107ms
Top4:NBear?并發:101,516ms?非并發:211,105ms
Top5:NHibernate?非并發:1,230,465ms
========================================================
?
?
5)、框架優缺點分析。
Gentle.Net
優點:支持t-sql,語法簡單方便,效率高。
缺點:依賴代碼生成器生成每個實體類。
?
iBatis
優點:?效率比較高,尤其是非并發下效果很高,比較穩定。
缺點:配置文件比較多,t-sql在每個配置文件里面寫,條件查詢比較麻煩。
?
SubSonic
優點:刪除和查詢效果很好,添加比較慢。
缺點:語法比較接近Linq,語法自成一派比較不滿意。
?
NHibernate
優點:覆蓋功能比較全,穩定性好,集成性能好,使用比較廣泛,支持t-sql和hql語法。
缺點:配置比較多,比較麻煩,效率比較慢。
?
NBear
優點:配置最簡單。
缺點:操作語法不成熟,不支持t-sql,使用起來不方便,已經很久沒有更新了。
?
ps:大家根據測試的結果自行選擇合適的框架。
總結
以上是生活随笔為你收集整理的ORM for Net主流框架汇总与效率测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn add Default@2x.p
- 下一篇: 孕妇梦到狗是什么意思