Ich glaub dir ja normal viel, aber hier glaub ich dir nicht alles
Wenn alleine das Durchlaufen mit ForEach verantwortlich wäre, dann müsste das ForEach auch ohne Löschbefehle in der Schleife schon langsam sein. Ist aber nicht der Fall, ForEach ist richtig schnellSTARGÅTE hat geschrieben:Das Langsame ist hier nicht das Löschen der Elemente mit DeleteMapElement() sondern das "unnatürliche" durchlaufen der Map mit ForEach oder NextMapElement().
Verstehe ich nicht. Die Anzahl der Slots gebe ich beim NewMap Befehl mit an und die ändert sich nie. Wenn dem so wäre, dann dürfte folgender Code nicht schneller sein als der Code, den ich mit meinem ersten Posting veröffentlicht habe:STARGÅTE hat geschrieben:Mit deinem Testcode änderst du sowohl die Anzahl der Slots als auch die Anzahl der Elemente, somit werden zwei Parameter des Tests verändert!
Code: Alles auswählen
EnableExplicit
#cntMax = 30000
NewMap MyMap (#cntMax)
Define time1, time2
Define i
time1 = ElapsedMilliseconds()
For i = 1 To #cntMax
AddMapElement (MyMap(), "x" + i)
Next
time1 = ElapsedMilliseconds() - time1
time2 = ElapsedMilliseconds()
While MapSize (MyMap())
ForEach MyMap()
DeleteMapElement (MyMap())
NextMapElement (MyMap())
Next
Wend
time2 = ElapsedMilliseconds() - time2
MessageRequester ("", "" + time1 + #CRLF$ + time2)