2011-07-15 28 views

回答

13

100百萬次迭代測試結果:

Equality operator ==: 796 ms 
string.Equals:   811 ms 
string.IsNullOrEmpty: 312 ms 
Length:     140 ms [fastest] 
Instance Equals:  1077 ms 

source

+0

我猜想'長度'將是最快的,我是對的:)尼斯鏈接,順便說一句:) –

+0

對於任何示例來說,這似乎都非常緩慢,我不知道這些測試是否使用Pentium I處理器完成。 – jlafay

+0

@jlafay - 來自網站的引用 - 「我跑了這些if語句,每次迭代1億次。 ' –

11

使用String.IsNullOrEmpty(data)

1

使用String.IsNullOrEmpty()檢查。

2

我會選擇第三個,它是不太容易出現的錯誤:

String.IsNullOrEmpty(data)

2

既不檢查將是你的瓶頸。但是,如果您選擇第一個,那麼如果字符串爲空,則可以運行NullReferenceException。第二個你不會有這個問題。

2

從邏輯上講,data.Length == 0更有效,因爲它是簡單地比較兩個整數值,而data == String.Empty是比較字符串(雖然很短的)。

但是,編譯器或框架可能會進行一些優化,以最大限度地減少或消除任何差異。這使得在沒有運行自己的時間測試的情況下很難做出絕對的聲明。

最後,我懷疑這種差異是否足以引起注意。

2

最佳做法是使用String.IsNullOrEmpty(或者,如果它符合您的要求,則使用.Net 4.0 - String.IsNullOrWhiteSpace)。

如果您致電s.Length,那麼如果字符串爲null,則將獲得NullReferenceException。這意味着您需要檢查if(s == null || s.Length == 0)。這將是最有效的,也可能是最快的,但你也可以使用String.IsNullOrEmpty

s == string.Empty如果字符串爲nullnull與空字符串不相同)將返回false。

在性能方面,請不要再花時間思考它。它幾乎不會永遠永不影響性能。

2

正如人們所提到的,使用.NET 4.0框架中引入的string.IsNullOrEmpty(str)string.IsNullOrWhiteSpace(str)

相關問題