FireDAC vs dbExpress 效能之戰,使用DataSnap |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
FireDAC 和 dbExpress 的效能比較
以DataSnap為基底,總算是站在同一個基準線上了 FireDAC dbExpress 效能之戰,使用DataSnap 也許使用While Loop測試比較也可以;但 |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
Select 20368 的這一項測試
應該要加一項 t1 := GetTickCount; ClientDataset.open; ClientDataset.Last; t2 := GetTickCount; 或許三者時間會差不多 ===================引 用 GrandRURU 文 章=================== FireDAC 和 dbExpress 的效能比較 以DataSnap為基底,總算是站在同一個基準線上了 FireDAC dbExpress 效能之戰,使用DataSnap 也許使用While Loop測試比較也可以;但 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我也想知道下面的結果為何。
40s vs 3s 是13倍多之差,必有"問題"。但假如結果是都差不多40s… 那我真的無言。2萬筆的資料就資料庫的筆數來看,是很小很小的集合。萬一資料數十萬筆的時候…啊不就哭哭,能夠承受嗎? 另ruru問,why? 我的看法是 open的時候不一定代表所有的資料全都下載下來,有可能是前幾筆,也有可能傳回來的只是cursor。所以我甚至認為要loop所有的筆數與欄位值後,從頭至尾,才比較公平。 driver的實作有很多種。比如先回傳 cursor 集 (全部或部份),然後在取用欄位時,再依cursor key 去取回欄位的值。有也可能是一開始就回傳所有的筆數與欄位,即全部到位的在記憶體中。 很嚴僅的講,cursor set 與 dataset 是不太一樣的。但經常都被認為 dataset。比如一個table有10個欄位,若是正統dataset是n筆的10欄都到client的記憶體中了。cursor set 則是n筆的rowid (db內鍵唯一值,一欄) 到client端,等到實際 getfieldbyname(xxxxxxx) 時才依key去取值回來。 不過各種實作的可能都有,我們不是寫driver的作者,除非看源碼,不然不會知道是怎麼實作。以上是後我的看法。 ===================引 用 leveon 文 章=================== Select 20368 的這一項測試 應該要加一項 t1 := GetTickCount; ClientDataset.open; ClientDataset.Last; t2 := GetTickCount; 或許三者時間會差不多
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
嗯,了解! 謝謝你實測。一如你blog文中好像有提,好像沒人真的去測它…
… 那麼回想有人提到… dbx 有多麼的快是(肯定不會是講3rd的,是講內建的)…… ??? … 2萬筆40秒,這真的不是普通級的慢! 是非常非常無法忍的慢! ===================引 用 GrandRURU 文 章=================== SELECT 測試項目中,資料全都有下載到前端ClientDataSet。 EMBT DBX 在 SQL Server ,平均時間確實是在 40 秒以上; 可能要在 InterBase 下才能發揮它應有的實力吧。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2015-04-27 23:01:23, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
不是每個資料表都有這個問題
隨著資料表的欄位不同,也會有不同的結果。 只是我挑的表格剛好有這麼強烈的對比。 而且這是我已經調整過結果,原在 XE(2011)下,SELECT 結果是 N/A,會直接出 ERROR,在 XE7 下測試才正常(也就是看到的 40 秒)。 所以,退一萬步來說,都只能證明 DBX for SQL Server 官方 DRIVER 是不穩定的。我想,使用官方 DBX Interbase / Firebird DRIVER 才會是趨向正常的「體感」。最近,用 Devart Driver 用得還蠻開心的。^_^ ================引 用 aftcast 文 章=================== 嗯,了解! 謝謝你實測。一如你blog文中好像有提,好像沒人真的去測它… … 那麼回想有人提到… dbx 有多麼的快是(肯定不會是講3rd的,是講內建的)…… ??? … 2萬筆40秒,這真的不是普通級的慢! 是非常非常無法忍的慢! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |