2012-02-14 67 views
-5

哪個代碼執行速度更快,爲什麼變量鑄造性能比較

((Form)controls.Owner).Text = langfile.ReadString(
     FormName, ((Form)controls.Owner).Name, ((Form)controls.Owner).Text); 

Form form = (Form)controls.Owner; 
form.Text = langfile.ReadString(FormName, form.Name, form.Text); 
+2

你有沒有真正嘗試過嗎? – 2012-02-14 13:25:40

+7

答案是「誰在乎呢?」。第二個更容易閱讀,這遠遠超過了任何微小的性能優勢。 – Blorgbeard 2012-02-14 13:28:00

回答

6

第二種形式可能是非常輕微更快(僅一個執行時間檢查,而不是三個),但是這幾乎肯定會是微不足道的。

然而,第二的可讀性很多比第一多更好 - 於是有了第二種形式去,因爲這個原因。你的發展的順序應該是:

  • 寫最清潔,最易於維護的代碼,你可以
  • 測量代碼來看看它執行不夠好
  • 如果它不,它輪廓找出其中的時間被消耗
  • 如果分析沒有建議在設計的變化(它經常會),然後才把應該你微優化代碼分割成更小可讀形式
+0

又是怎麼回事存儲消費的變量? – 2012-02-14 13:29:24

+0

@Ask:沒有區別,或者*可能*在堆棧上一個額外的參考。微不足道。 – 2012-02-14 13:30:07

2

你一定要使用第二個版本:

  • 更可讀
  • 沒有多餘的鑄造。

There 對於第一個版本沒有任何優勢。

+0

是否編譯器優化莫名其妙冗餘鑄造? – 2012-02-14 13:31:27

+0

@問我不知道。但是,可讀性的好處更重要的是微優化,特別是與UI相關的操作。 – ken2k 2012-02-14 13:41:42

0

Althoug我不是一個編譯器專家這是很明顯的是,兩個表達式將被轉換爲幾乎相同的IL代碼,因此性能增益,如果有的話,將是微不足道的。