進(jìn)行ADO.Net性能測試數(shù)據(jù)分析
用于在某個(gè)時(shí)候只返回一頁記錄的技術(shù)之一是建立一個(gè)SQL語句,該語句包含一個(gè)WHERE和ORDER BY子句,并有TOP判定。這種技術(shù)依賴于識(shí)別每個(gè)唯一行的方法,那么,Oracle是否有計(jì)劃給Visual Studio編寫?yīng)毺氐?FONT>ADO.Net性能呢?
測試環(huán)境當(dāng)然就是我這臺(tái)筆記本了,受限與硬盤轉(zhuǎn)速,運(yùn)行起來一定是不如臺(tái)式機(jī)的,但至少保證了三個(gè)方案相同的軟硬件環(huán)境:Windows Server 2008,Visual Studio 2008,MS SQL Server 2008,清一色的***產(chǎn)品。
測試分成六個(gè)階段,數(shù)據(jù)量分別為10,10,100,1千,1萬,10萬逐級(jí)增長,分別測試了讀取、寫入、更改、刪除四個(gè)基本的操作的耗時(shí),結(jié)果如下(時(shí)間單位:秒):
***次讀寫10條數(shù)據(jù) | |||||
讀寫方式 | 讀取耗時(shí) | 添加耗時(shí) | 修改耗時(shí) | 刪除耗時(shí) | 平均耗時(shí) |
當(dāng)前機(jī)制(簡化) | 0.007 | 0.35 | 0.02 | 0.014 | 0.09775 |
LINQ to SQL | 0.023 | 0.083 | 0.102 | 0.068 | 0.069 |
Entity Framework | 0.238 | 3.084 | 0.009 | 0.006 | 0.83425 |
***階段測試結(jié)果非常出人意料,ADO.Net性能和LINQ to SQL操作數(shù)據(jù)的時(shí)間都控制在0.5秒以內(nèi),非常的迅速,但是Entity Framework在添加這步表現(xiàn)非常差,由于這五步是連續(xù)測試,其中添加數(shù)據(jù)是***步操作,而EF在在進(jìn)行***步操作的時(shí)候足足延遲了3秒鐘!這3秒鐘 到底EF在做什么?
從第二階段開始,性能的優(yōu)劣就非常明顯的展現(xiàn)在我們面前,第二階段到第六階段,不論操作數(shù)據(jù)量的大小,圖中的耗 時(shí)比例幾乎是相同的。Entity Framework無可爭議的以極高的效率在三種方案中脫穎而出,而LINQ to SQL的龜速修改和刪除操作消耗的時(shí)間幾乎是EF的10倍,ADO.Net性能在添加數(shù)據(jù)上的表現(xiàn)實(shí)在不盡如人意,這也跟我們項(xiàng)目底層寫法有關(guān)。 #t#
從上面的測試結(jié)果可以看出,除去EF在初次操作數(shù)據(jù)是延遲的3秒鐘(初步認(rèn)為是初始化時(shí)間),EF的平均效率是LINQ to SQL的6倍,是當(dāng)前項(xiàng)目機(jī)制的4倍,這是非??捎^的效率提升,不難理解為什么微軟幾乎放棄了LINQ to SQL,全力支持EF了。