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


ContractedBlock.gif測試數據庫與表


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)。

========================================================

增加排行:

Top1iBate 併發:36,321ms 非併發:100,719ms

Top2:GentleNet 併發:36,731ms 非併發:115,875ms

Top3SubSonic 併發:56,342ms 非併發:124,844

ms

Top4NBear 併發:113,793ms 非併發:223,768

ms

Top5NHibernate 非併發:1,247,572

ms


========================================================

修改排行:

Top1GentleNet 併發:25,985ms 非併發:98,868ms

Top2iBate 併發:33,366ms 非併發:102,875

ms

Top3SubSonic 併發:36,916ms 非併發:124,844

ms

Top4NBear 併發:113,793ms 非併發:102,821

ms

Top5NHibernate 非併發:279,851

ms


========================================================

查詢排行:

Top1GentleNet 併發:19,776ms 非併發:54,515ms

Top2SubSonic 併發:26,784ms 非併發:67,344ms

Top3iBate 併發:39,854ms 非併發:37,339(非併發下查詢效率最高)ms

Top4NBear 併發:94,265ms 非併發:157,676ms



Top5NHibernate 非併發:1,438,398

ms


========================================================

刪除排行:

Top1SubSonic 併發:28,223ms 非併發:97,846ms

Top2iBate 併發:31,964ms 非併發:88,420ms

Top3GentleNet 併發:33,802ms 非併發:102,107ms

Top4NBear 併發:101,516ms 非併發:211,105ms

Top5NHibernate 非併發:1,230,465ms

========================================================



5)、框架優缺點分析。

Gentle.Net

優點:支持t-sql,語法簡單方便,效率高。

缺點:依賴代碼生成器生成每個實體類。


iBatis

優點效率比較高,尤其是非併發下效果很高,比較穩定。

缺點:配置文件比較多,t-sql在每個配置文件裏面寫,條件查詢比較麻煩。


SubSonic

優點:刪除和查詢效果很好,添加比較慢。

缺點:語法比較接近Linq,語法自成一派比較不滿意。


NHibernate

優點:覆蓋功能比較全,穩定性好,集成性能好,使用比較廣泛,支持t-sqlhql語法。

缺點:配置比較多,比較麻煩,效率比較慢。


NBear

優點:配置最簡單。

缺點:操作語法不成熟,不支持t-sql,使用起來不方便,已經很久沒有更新了。


ps:大家根據測試的結果自行選擇合適的框架。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章