Weshalb die Geschwindigkeit ab-/zunimmt kann ich Dir sagen. Wenn Du schonmal mit verketteten Typen gearbeitet hast, kannst Du Dir das auch vorstellen. Ganz simpel
Hier ein Array
Delphi-Quellcode:
[Element 1]
<Wert>
Zeiger auf Element 2
[Element 2]
<Wert>
Zeiger auf Element 3
[Element 3]
<Wert>
Zeiger auf Element 4
.
.
.
[Element 1000]
<Wert>
Zeiger auf Element 1001
So, nun muss jedesmal von "vorne" begonnen werden, die Liste durchzuarbeiten, bis er am angesprochenen Element angekommen ist. Nun ist es, je nach Richtung, anfangs schneller und am Ende langsamer (oder eben umgekehrt).
Ich denke mal nicht, daß hierbei irgendwie Compilerintern ein Caching durchgeführt wird.
Falls ich falsch liegen sollte wird mich sicher jemand korrigieren ;)
MfG Michael:)