我在哪裏工作我們終於來到使用強類型數據集來封裝我們的一些查詢到sqlserver的想法。我一直在兜售的想法之一是強類型列的強度,主要是爲了不需要投射任何數據。我認爲強類型數據集可以在可能存在數千行的情況下提高性能,我錯了嗎?強類型數據集可以提高性能嗎?
老辦法:
using(DataTable dt = sql.ExecuteSomeQuery())
{
foreach (DataRow dr in dt.Rows)
{
var something = (string)dr["something"];
var somethingelse = (int)dr["somethingelse"];
}
}
新的方式:
MyDataAdapter.Fill(MyDataset);
foreach (DataRow dr in MyDataset.MyDT.Rows)
{
var something = dr.Something;
var somethingelse = dr.SomethingElse;
}
如果性能真的只是在做幕後的鑄造,我可以看到不會有任何加速在所有;也許這會花費更長的時間,然後纔會首先調用函數調用的開銷。
使用DataSets我們應該知道的其他性能優勢/弱點?
謝謝!
我期望一個非常小的改進,因爲在運行時沒有對列名進行查找:編譯器可以提前完成這項工作。但我真的懷疑這種差異是可以衡量的 – 2009-02-09 15:49:17
您能否擴展訪問一個無類型數據集的「快速技術」? – 2009-02-09 15:55:25
尼古拉斯在鏈接的文章中向下滾動到「Casting Calls」部分,這裏都有解釋。我在下面的答案中提到了 – 2009-02-09 16:03:40