List1 w następującym przykładzie to SortedList (Of MyClass) i zawiera 251 elementów.Jazda na rowerze przez SortedList - Dlaczego jest to szybsze?
Pierwsze dwa bloki kodu wykonują w 15,5 sekundy.
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
Ten wykonuje się w 5,6 sekundy.
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
Dlaczego są dwa pierwsze codeblocks tyle wolniej?
Nie jestem pewien, ale może pętla For Each ma większy narzut niż pętla For na liczby całkowite. Zatem druga linia może być odpowiedzialna za przyspieszenie? Naprawdę nie wiem. –
Czy dwie pierwsze pętle zajmują 15,5 sekundy RAZEM czy KAŻDEMU? – Artelius
@Artelius - Każdy –