2014-02-07 24 views
0

我想弄清楚哪些代碼會更有效地執行。我只想要經驗的答案,因爲我沒有完全理解如何測試這個。如果有一個好的方法來測試,我也會很感激這些建議。如果這篇文章不應該在這裏,我很樂意刪除它,我真的很想知道。C#執行性能

謝謝!

全局變量:

const string FILTER_PLACE_HOLDER = ">-- All Locations --<"; 

方法1(目前我使用的是什麼):

ddnZipCode.Text = FILTER_PLACE_HOLDER; 
Boolean EnableZipSelection = ((DropDownList)sender).SelectedValue.ToString().Trim() == FILTER_PLACE_HOLDER; 
ddnZipCode.Enabled = EnableZipSelection; 

方法2:

if (((DropDownList)sender).SelectedValue.ToString().Trim() == FILTER_PLACE_HOLDER) 
{ 
    ddnZipCode.Enabled = true; 
} 
    else 
{ 
    ddnZipCode.Enabled = false; 
} 

方法3:

ddnZipCode.Enabled = ((DropDownList)sender).SelectedValue.ToString().Trim() == FILTER_PLACE_HOLDER ? true : false; 
+5

是什麼讓你覺得這是一個性能問題? –

+3

他們將全部表現相同。你應該總是使用最易讀的選項,這是第一個。 – SLaks

+0

如果編譯器沒有看到那些完全相同的東西,我會感到驚訝。我同意Brian的觀點,儘管這裏可能沒有性能問題。 – Chris

回答

0

您可以測試像這樣的所有方法的性能: 請記住,如果時間保持不變,請增加「max」變量的值以實現相當長的時間差。

Stopwatch watch = new Stopwatch(); 

int i = 0; 
int max = 10000000; 

watch.Start(); 
while (i < max) 
{ 
//call the method to test 
i++; 
} 
watch.Stop(); 

MessageBox.Show("Elapsed time of the Test 1 : " + watch.Elapsed.ToString(); 
+0

你應該扔掉第一個100-1000的跑步,因爲他們會受內存分配影響,不能代表實際性能。 – pid

+0

這將測量JIT被測方法所需的時間,這可能不是您想要的。 –

+1

如果有人不知道名稱空間,Stopwatch是System.Diagnostics.Stopwatch –