Beim ersten Mal muss es real vom Datenträger gelesen werden, bei allen weiteren Versuchen steht's wahrscheinlich schon im RAM.
es kann sich aber auf dem Datenträger\im Verzeichnis etwas verändert haben. Demzufolge muss ja die Belegung wieder neu ausgelesen werden. Ich kann mir nicht vorstellen, dass Auslese-Ergebnisse irgendwo gespeichert und dann nur noch verglichen werden.
Wenn mich die Frage interessieren würde, dann täte ich einige weitere Tests, etwa sehen, was passiert, wenn das externe Medium zwischendurch ausgeworfen war. Testverzeichnisse anlegen und mit unterschiedlicher Anzahl unterschiedlich großer Dateien versuchen, ob das denn überhaupt immer so ist. Dann die Verzeichnisse gezielt verändern und wiederholen. Genauere Angaben zur Dauer kann dabei
time liefern. Linux bietet auch die Möglichkeit, den Speicher zu leeren (ich habe den Befehl vergessen benutzte das aber in meinen Tests zur Schreibgeschwindigkeit, die ich hier irgendwo gepostet hatte). Dass nur
du selbst im RAM bleibt, kann nicht den Geschwindigkeitsvorteil erklären. Lediglich beim Aufruf von sehr langsamen System-Medien kann das einen leichten Vorteil bringen.
Ja, und schließlich würde ich mir einfach versuchen, den Code von
du anzusehen, ob das irgendwelche Magie oder Intelligenz drin hat. Ich kann mir das ehrlich nicht vorstellen. Aber man weiß ja nie...