ORM for Net主流フレームワークの要約と効率テスト

7418 ワード

フレームワークはますます多くの人に注目され、使用されています.今日はネット上のいくつかの主流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 OrmDB

go
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)です.
========================================================
ランキングを追加:
Top 1:iBate同時:36321 ms非同時:100719 ms
Top 2:GentleNet同時:36731 ms非同時:115875 ms
Top 3:SubSonic同時:56342 ms非同時:124844 ms
Top 4:NBEar同時:113793 ms非同時:223768 ms
Top 5:NHibernate非同時:1247572 ms
 
========================================================
ランキングの変更:
Top 1:GentleNet同時:25985 ms非同時:98868 ms
Top 2:iBate同時:33366 ms非同時:102875 ms
Top 3:SubSonic同時:36916 ms非同時:124844 ms
Top 4:NBEar同時:113793 ms非同時:102821 ms
Top 5:NHibernate非同時:279851 ms
 
========================================================
クエリーのランキング:
Top 1:GentleNet同時:19776 ms非同時:54515 ms
Top 2:SubSonic同時:26784 ms非同時:67344 ms
Top 3:iBate同時実行:39854 ms非同時実行:37339(非同時送信クエリ効率が最も高い)ms
Top 4:NBEar同時:94265 ms非同時:157676 ms
 
 
Top 5:NHibernate非同時:1438398 ms
 
========================================================
ランキングの削除:
Top 1:SubSonic同時:28223 ms非同時:97846 ms
Top 2:iBate同時:31964 ms非同時:88420 ms
Top 3:GentleNet同時:33802 ms非同時:102107 ms
Top 4:NBEar同時:101516 ms非同時:211105 ms
Top 5:NHibernate非同時:1230465 ms
========================================================
 
 
5)、フレームワークの長所と短所の分析.
Gentle.Net
利点:t-sqlをサポートし、文法が簡単で便利で、効率が高い.
欠点:依存コードジェネレータは、各エンティティクラスを生成します.
 
iBatis
利点:効率が高く、特に非併発効果が高く、安定している.
欠点:プロファイルが多く、t-sqlは各プロファイルに書かれており、条件クエリーが面倒です.
 
SubSonic
利点:削除とクエリーは効果的で、追加が遅い.
欠点:文法はLinqに近いので、文法は自成的で満足していません.
 
NHibernate
利点:カバー機能が比較的に完備し、安定性がよく、集積性能がよく、使用が比較的広く、t-sqlとhql構文をサポートする.
欠点:配置が多く、面倒で、効率が遅い.
 
NBear
利点:構成が最も簡単です.
欠点:操作文法が未熟で、t-sqlをサポートしていないので、使い勝手が悪くて、もう長い間更新していません.
 
ps:テストの結果に基づいて、適切なフレームワークを自分で選択します.