2

VB.NET 2008編譯器是否有選擇地優化Select Case Statements?VB.NET Select Case編譯器優化?

例如,具有足夠數量的整數個案的Select Case Statement可以組織爲二分搜索。

我問這個,因爲我很好奇我是否應該選擇一個Select Case來代替If語句與多個Else If如果要比較整數或其他基本數據類型。

回答

1

Select Case有40個選項比一串40 ElseIf語句快10倍以上。這比你用二分查找期望得到的改進更大。我猜想一個簡單的整數Select Case可以使用計算goto語句的現代機器代碼等價物 - 編譯它以便它根據整數值直接分支到合適的「case」。

我認爲Select Case是一個去。

2

一般來說,您應該擔心代碼的可讀性和可維護性,而不僅僅是這種性能微優化。

除非此開關位於正在執行1000次(數百萬次)的循環內,否則這不太可能是您的應用程序的性能瓶頸。

做出決定並堅持一致。一般來說,除非您分析了性能瓶頸,否則不要調優代碼。請參閱this question