自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CYQ.Data數(shù)據(jù)框架的性能評測

數(shù)據(jù)庫
最近有網(wǎng)友經(jīng)常關(guān)注CYQ.Data的性能問題,雖然關(guān)注,但沒發(fā)現(xiàn)誰主動的寫過和其它框架的性能評測文章。筆者在這里為CYQ.Data寫了一個簡單的性能測試。

最近有網(wǎng)友經(jīng)常關(guān)注CYQ.Data的性能問題,雖然關(guān)注,但沒發(fā)現(xiàn)誰主動的寫過和其它框架的性能評測文章。

個人平常比較忙一些,這么長久以來,一直也沒好好的為CYQ.Data寫一個簡單的性能測試。

今天,得為它寫了一篇了。

雜七幾句:

當(dāng)很多人問我 CYQ.Data 性能怎樣時,我說:比其它ORM的框架性能要好。

當(dāng)然,我沒有給出任何的測試數(shù)據(jù)來證明,因為我沒用過其它框架,所以沒法給出數(shù)據(jù),所以只能任網(wǎng)友:愛信不信。

說比其它框架要好,當(dāng)然不是因為賣瓜的贊瓜甜,而是基于以下的認(rèn)知:

數(shù)據(jù)框架,正常都由這幾個過程組成:外部表現(xiàn)形式封裝->生成SQL->調(diào)用ADO.NET執(zhí)行。

其中,ADO.NET執(zhí)行上基本上一個樣的,因此,框架的性能差異也就表現(xiàn)在外部形式的封裝上和生成SQL的過程,性能差異多數(shù)取決于封裝的復(fù)雜度。

而 CYQ.Data ,僅是在SQLHelper上多包裝了一層,走的是原生的索引形式,所以從封裝及生成SQL上的速度來說,是要比其它NHibernate、Spring.Net、Entity Framework、Linq等來的快些的。

因此,我也就簡略的得出一個簡單但不嚴(yán)謹(jǐn)?shù)慕Y(jié)論。

說明:

由于沒有使用其它框架的習(xí)慣,故此處的評測,就不與其它框架做比較。

而將采用與原生的ADO.NET比較,測試CYQ.Data與原生框架的性能差異有多少。

懂其它框架的人,與原生ADO.NET一比,自然也可以得出和CYQ.Data的性能差異了。

本次測試僅測試寫數(shù)據(jù),測試代碼將在后面顯示。

一:寫個循環(huán)調(diào)用插入數(shù)據(jù)看看結(jié)果先

1:插入10條數(shù)據(jù):

2:插入100條數(shù)據(jù):

3:插入1000條數(shù)據(jù):

分析從上面3張圖的數(shù)據(jù)中,暫時得出的結(jié)論是:

在數(shù)據(jù)量小的情況,CYQ.Data 的性能竟然比原生ADO.NET的還優(yōu)越。

隨著數(shù)據(jù)量往上升時,CYQ.Data 的性能開始下降。

結(jié)論疑問:

這個結(jié)論讓人看著很迷惑,甚至是不太可能的,有幾個疑點(diǎn):

  1. CYQ.Data 數(shù)據(jù)框架是基于ADO.NET封裝的,怎么可能比ADO.NET執(zhí)行的更快?
  2. CYQ.Data 在循環(huán)次數(shù)增加時,性能就越來越下降?
  3. CYQ.Data 的MAction表現(xiàn)比MProc差這么遠(yuǎn)的?

疑問解答,發(fā)現(xiàn)問題:

  1. CYQ.Data 默認(rèn)開啟的事務(wù)機(jī)制,導(dǎo)致比示例中無事務(wù)的ADO.NET調(diào)用性能高了一些。
  2. CYQ.Data 內(nèi)部的DebugInfo屬性,不斷的循環(huán)自加記錄執(zhí)行的SQL語句致性能下降。就是通常人們經(jīng)常測試的string與StringBuilder的區(qū)別。
  3. MAction內(nèi)部多了一次反填充,即插入后,根據(jù)ID查詢數(shù)據(jù)填充了下行數(shù)據(jù),所以測試對它是不太公平的。

二:公平測試

CYQ.Data:關(guān)閉調(diào)試信息、關(guān)閉事務(wù)、MAction關(guān)閉反填充。

同時為了避免由于執(zhí)行順序引起的性能影響,每個我都單獨(dú)執(zhí)行,執(zhí)行后truncate表再執(zhí)行另一條。

由于沒有一起執(zhí)行,就看不到一起輸出的信息截圖了,只能單獨(dú)的復(fù)制結(jié)果下來了。

結(jié)果如下:

1:插入10條數(shù)據(jù):

ADO.net [ADO.net]:0.15625[秒]--10
CYQ.Data[MProc##]:0.171875[秒]--10
CYQ.Data[MAction]:0.265625[秒]--10

2:插入100條數(shù)據(jù):

ADO.net [ADO.net]:0.203125[秒]--100
CYQ.Data[MProc##]:0.234375[秒]--100
CYQ.Data[MAction]:0.3125[秒]--100

3:插入1000條數(shù)據(jù):

ADO.net [ADO.net]:0.53125[秒]--1000
CYQ.Data[MProc##]:0.859375[秒]--1000
CYQ.Data[MAction]:1.015625[秒]--1000

分析從上面三組數(shù)據(jù)中,我們看出:

CYQ.Data 的性能基本維持和ADO.NET相差無幾,在數(shù)據(jù)量上升到時1000時,也僅是2倍不到的差距。

由此說明,CYQ.Data 在性能上,是相當(dāng)接近原始的ADO.NET,原因就在于,它并沒有過多去封裝ADO.NET。

僅是簡單的封裝,卻能使用如此簡便,這就是它區(qū)別其它框架最大的優(yōu)勢所在。

當(dāng)然,這僅是一個小的測試,不能代表總體來做嚴(yán)謹(jǐn)?shù)慕獯稹?/P>

但,在某方面,也算是給對此框架性能有疑問的網(wǎng)友,作了一點(diǎn)解答。

至少,它還是值得你擁有的。

下載地址:http://www.cyqdata.com/download/article-detail-426

三:測試的代碼示例:

1:原始的ADO.NET測試代碼:

  1. public static void ADO_NET()  
  2. {  
  3.     DateTime start = DateTime.Now;  
  4.     SqlConnection con = new SqlConnection("server=.;database=abc;uid=sa;pwd=123456");  
  5.     SqlCommand com = new SqlCommand();  
  6.     com.Connection = con;  
  7.     com.CommandText = "insert into Users(UserName,Password) values(@UserName,@Password)";  
  8.     con.Open();  
  9.     for (int i = 0; i < count; i++)  
  10.     {  
  11.        com.Parameters.Clear();  
  12.        com.Parameters.AddWithValue("@UserName""U_" + System.Threading.Thread.CurrentThread.ManagedThreadId);  
  13.        com.Parameters.AddWithValue("@Password""P_" + i);  
  14.        if (com.ExecuteNonQuery() > -1)  
  15.        {  
  16.           ok2++;  
  17.        }  
  18.     }  
  19.     con.Close();  
  20.     TimeSpan ts = DateTime.Now - start;  
  21.     Console.WriteLine("ADO.net [ADO.net]:" + ts.TotalSeconds + "[秒]--" + ok2);  
  22. }  

 2:CYQ.Data 的MProc測試代碼:

  1. public static void MProc()  
  2. {  
  3.     DateTime start = DateTime.Now;  
  4.     MProc proc = new MProc("insert into Users(UserName,Password) values(@UserName,@Password)");  
  5.     proc.EndTransation();//關(guān)閉事務(wù)  
  6.     for (int i = 0; i < count; i++)  
  7.     {  
  8.        proc.Clear();  
  9.        proc.Set("@UserName""U_" + System.Threading.Thread.CurrentThread.ManagedThreadId);  
  10.        proc.Set("@Password""P_" + i);  
  11.        if (proc.ExeNonQuery() > -1)  
  12.        {  
  13.            ok3++;  
  14.        }  
  15.     }  
  16.     proc.Close();  
  17.     TimeSpan ts = DateTime.Now - start;  
  18.     Console.WriteLine("CYQ.Data[MProc##]:" + ts.TotalSeconds + "[秒]--" + ok3);  
  19. }  

3:CYQ.Data 的MAction測試代碼:

  1. public static void MAction()  
  2. {  
  3.     DateTime start = DateTime.Now;  
  4.     MAction action = new MAction("Users");  
  5.     action.EndTransation();//關(guān)閉事務(wù)  
  6.     for (int i = 0; i < count; i++)  
  7.     {  
  8.        action.Set("UserName""U_" + System.Threading.Thread.CurrentThread.ManagedThreadId);  
  9.        action.Set("Password""P_" + i);  
  10.        if (action.Insert())  
  11.        {  
  12.            ok++;  
  13.        }  
  14.     }  
  15.     action.Close();  
  16.     TimeSpan ts = DateTime.Now - start;  
  17.     Console.WriteLine("CYQ.Data[MAction]:" + ts.TotalSeconds + "[秒]--" + ok);  
  18. }  
  19.    

原文出處:http://www.cnblogs.com/cyq1162/archive/2011/03/08/1977422.html

【編輯推薦】

  1. Mongodb億級數(shù)據(jù)量的性能測試
  2. MongoDB和MySQL性能測試及其結(jié)果分析
  3. 精煉概括Oracle性能測試
  4. MySQL性能測試大總結(jié)
  5. MySQL中MyISAM引擎和Heap引擎執(zhí)行速度性能測試
責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2009-09-18 13:05:59

.NET CLR

2009-12-03 19:02:05

Linux

2010-11-08 14:26:16

云計算標(biāo)準(zhǔn)

2010-09-27 14:37:10

評測SSL VPN

2010-09-25 14:45:47

LinuxJVM

2010-12-20 09:37:55

Opera 11Chrome 10

2009-02-01 09:29:44

2013-02-22 09:49:29

Nagios監(jiān)控性能評測

2010-01-05 13:56:37

2009-05-25 08:52:47

GoogleChrome瀏覽器

2017-03-07 07:44:52

Spark數(shù)據(jù)傾斜

2013-07-16 09:09:30

Ubuntu

2015-12-30 19:19:37

云存儲

2011-12-13 09:12:34

JavaNIO

2011-09-13 14:30:43

筆記本評測

2009-06-08 09:57:45

編程語言編程語言性能高級編程語言

2013-05-17 11:41:48

華為高性能存儲卡

2022-05-13 23:03:25

大數(shù)據(jù)Big Data巨量資料

2010-05-11 14:24:38

Chrome瀏覽器性能橫評測

2017-08-07 10:04:49

數(shù)據(jù)數(shù)據(jù)治理數(shù)據(jù)管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號