[英]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.