【发布时间】:2009-11-02 01:01:11
【问题描述】:
以下示例中的 List1 是一个 SortedList(Of MyClass),包含 251 个成员。
前两个代码块在 15.5 秒内执行。
For cnt As Integer = 1 To 1000000
For Each TempDE In List1
Dim F As String = TempDE.Key
TempDE.Value.x1 = 444
Next
Next
For cnt As Integer = 1 To 1000000
For Each TempDE As KeyValuePair(Of String, phatob) In List2
Dim F As String = TempDE.Key
TempDE.Value.x1 = 444
Next
Next
这个在 5.6 秒内执行。
For cnt As Integer = 0 To 999999
For cnt2 As Integer = 0 To 250
Dim F As String = List1.Keys(cnt2)
List1.Values(cnt2).x1 = 444
Next
Next
为什么前两个代码块这么慢?
【问题讨论】:
-
不确定,但 For Each 循环的开销可能比整数上的 For 循环更大。因此,第二行可能负责加速?我真的不知道。
-
前两个循环需要 15.5 秒,还是每个循环?
-
运行我自己的一些测试后,您确定列表有 251 个元素吗?以及为什么第二个示例使用 List2?
标签: .net vb.net containers sortedlist