Durch Zufall auf der Suche nach einer Moeglichkeit, grosse Verzeichnisse mit
vielen Dateien schneller zu listen, bin ich auf einen interessanten Switch von
ls
gestossen: -f
. Dieser Switch macht laut man page folgendes:
-f do not sort, enable -aU, disable -lst
Das klingt erstmal furchtbar trivial und kaum bemerkenswert. Jetzt kommt das
grosse aber: Fuehrt man ls
damit aus, wird es schneller. Viel schneller. In
einem Test auf ein real-world Datenset konnte ich eine bis zu zehnfache
Beschleunigung feststellen.
Bei den Tests war - und das hat mich am meisten erstaunt - das Listing sogar
schneller als mit find
.
Noch schneller geht es dann nur noch mit einer selbstkompilierten Loesung,
die bestimmte Einschraenkungen von ls
und auch readdir()
mit getdents
umgeht. Einen kompletten Artikel dafuer gibt es im Blog von Olark.