簡體   English   中英

性能:List.Count與檢查存儲的變量

[英]Performance: List.Count vs checking a stored variable

我想知道這是否有所不同:

 for (int i = 0; i < values.Count; i++)
        {
            //
        }

VS

int num = values.Count;

for(int=0; i<num; i++)
{

}

我認為第二種方法更好,因為您不需要計算每次迭代中的所有項目。 但我可能錯了。 有人可以照亮我嗎?

該列表已在內部存儲其Count 您正在進行的比較與代碼樣式有關,而與性能無關。 由於編譯器將優化'Count'的檢索

那么你可以在這里查看.NET源代碼http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs#aa7e01fcb80a917e

  public int Count {
        get {
            Contract.Ensures(Contract.Result<int>() >= 0);
            return _size; 
        }
    }

看來列表中的.Count屬性會進行快速內部檢查,然后返回_size。 所以它應該非常接近你自己存儲值的性能。

這完全取決於什么values Count可以完全不同地實現,具體取決於此對象的類型。

如果您正在討論通用List<T> - 那么Count將被實現為不重新評估的內部屬性 - 因此是更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM