2011-08-31 69 views
0

任何人都可以爲我闡明一些。 這將是表現更好的哪一個對性能最好

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     string stock = row["stpt_Stock"].ToString(); 
     textbox.text = stock; 
    } 

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     textbox.text = row["stpt_Stock"].ToString(); 
    } 

會不會有太大的差別,即使數據表是巨大的。只是想知道如果數據直接傳遞,性能是否更好。

回答

4

將會有效率沒有明顯的差異 - 我懷疑它甚至衡量,如果它在所有存在

你分配給本地變量的事實基本上是無關緊要的。表達式row["stpt_Stock"].ToString()的值將以任何方式在堆棧上結束。唯一的區別是該堆棧槽是否有名稱。

在調試器中,它可能會產生一個微小的但可測量的差異,因爲它可能會有一些額外的影響 - 但當然不足以擔心。

我想我會更擔心的是,您將重複賦值給同一textBox.Text屬性 - 只有最後一個實際上是相關的。你會更好的只是取最後排......

+0

謝謝喬恩,這是偉大的。我只是用文本框作爲例子,但是謝謝 –

1

沒有什麼區別。編譯後可能完全相同的代碼。

1

沒有區別。
下面會比速度更快:

textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString(); 
+0

_might_比兩者都快。優化器可以看到從未使用分配的值並完全跳過分配。並不是說它只是它可以的 –

+0

@Rune:消除屬性分配的優化器會弄得一團糟。 Text屬性確實觸發了一些邏輯和重繪。 –

+0

如果確實存在副作用,那麼優化器將無法刪除分配,但是這樣您的代碼將無法工作,因爲這正是您剛纔所做的優化反正 –