Mario Blättermann
mario.blaettermann@gmail.com 2009, 2012, 2013, 2015
Christian Kirbach
christian.kirbach@googlemail.com 2010

# Laufwerkszugriffe werden als nachteilig angesehen

Laufwerkszugriffe sind die wohl aufwändigsten Vorgänge, die Sie überhaupt ausführen können. Sie wissen das womöglich nicht aufgrund der Anzahl der Ausführungen, aber glauben Sie mir, dass sie es sind. Folglich vermeiden Sie bitte das folgende ungünstige Verhalten:

Viele kleine Dateien auf dem gesamten Laufwerk verteilen.

Öffnen, stat() ausführen und lesen vieler Dateien vom gesamten Laufwerk

Obiges mit Dateien tun, die zu verschiedenen Zeitpunkten erstellt wurden, so dass sie fragmentiert sind und noch mehr Plattenaktivität verursachen.

Obiges mit Dateien tun, die sich in verschiedenen Ordnern befinden, so dass auf verschiedene Zylindergruppen zugegriffen wird und so noch mehr Plattenaktivität verursacht wird.

Wiederholt obiges tun, obwohl es nur einmal getan werden muss.

Mögliche Wege, wie Sie Ihren Code suchfreundlich optimieren können:

Fassen Sie Daten in einer einzigen Datei zusammen.

Halten Sie Daten im gleichen Ordner vor.

Speichern Sie Daten zwischen, so dass sie nicht fortwährend erneut eingelesen werden müssen.

Geben Sie Daten frei, so dass sie nicht beim Laden von Anwendungen immer wieder erneut gelesen werden müssen.

Erwägen Sie, alle Daten in einer einzigen Binärdatei zwischenzuspeichern, die sauber aufgebaut ist und mit mmap verarbeitbar ist.

Die Probleme mit Plattenzugriffen verstärken sich beim Lesen, was wir leider eben gerade tun. Merken Sie sich, dass im Allgemeinen Lesen synchron und Schreiben asynchron verläuft. Das verschlimmert nur das Problem mit jedem seriellen Lesevorgang und trägt zu Programmverzögerungen bei.