下面是繼承自List(Of T)
的我的課程相關部分的摘錄。看看SelectedObjects
和SelectedCount
屬性。由於性能原因,我添加了SelectedCount
,但我現在想知道它是否比SelectedObjects.Count()
更好。Where()。Count()vs. Count()
Public Class DrawingObjectsList
Inherits List(Of DrawingObjectBase)
Friend ReadOnly Property DOsOfCurrentFace As IEnumerable(Of DrawingObjectBase)
Get
Return Me.Where(Function(DObj) DObj.Face = mFace)
End Get
End Property
Public ReadOnly Property SelectedObjects() As IEnumerable(Of DrawingObjectBase)
Get
Return DOsOfCurrentFace.Where(Function(DObj) DObj.IsSelected = True)
End Get
End Property
Public ReadOnly Property SelectedCount() As Integer
Get
Return DOsOfCurrentFace.Count(Function(DObj) DObj.IsSelected = True)
End Get
End Property
End Class
我的理論是,無論Where(predicate).Count()
和Count(predicate)
將需要遍歷列表,因此不應該有任何相當大的差異。此外,由於我沒有在Where()
上做任何ToList()
或ToArray()
,我不確定是否可以調用Count()
就可以利用內置的Count
屬性。
那麼我應該保留還是刪除SelectedCount
屬性?
如果您想知道是否因性能原因而做某件事情值得,那麼有一個明顯的方法可以找到:衡量它。 –
@JonSkeet:正確,但我也想讓專業人士評估我的理論。 – dotNET
那麼,爲什麼你不測量*現在*,並將其添加到問題中......以及試圖確定'Count'在你的應用程序中所花費的時間是否真的很重要。 –