Wahrscheinlich ist die Zeit für die Laufwerksuche der limitierende Faktor (dies ist einer der häufigsten Engpässe beim Ausführen von Make, der normalerweise viele kleine Dateien enthält). Dumb-Dateisystem-Designs haben einen Verzeichniseintrag und bestehen auf einem Zeiger auf die Plattenblöcke für eine Datei, und das garantiert mindestens 1 Suche pro Datei.
Wenn Sie Windows verwenden, würde ich wechseln NTFS zu verwenden (die kleine Dateien in den Verzeichniseintrag speichert (-.> Speichern eine Platte pro Datei suchen) Wir verwenden eine Disk-Komprimierung auch (mehr Rechen aber CPUs sind billig und schnell, aber weniger Speicherplatz -> weniger Lesezeit); dies ist möglicherweise nicht relevant, wenn Ihre Dateien alle klein sind. Es kann ein Linux-Dateisystem geben, wenn Sie dort sind.
Ja , sollten Sie eine Reihe von Threads starten, um die Dateien zu lesen:
Sie müssen dies möglicherweise drosseln, um ru zu verhindern Es werden keine Threads ausgegeben, aber ich würde auf Hunderte, nicht auf 2 oder 3, schießen. Wenn Sie das tun, sagen Sie dem Betriebssystem, dass es viele Stellen auf der Festplatte lesen kann, und es kann mehrere Anfragen nach Festplattenplatzierung anfordern (elevator algorithm), und das wird auch helfen, Kopfbewegung zu minimieren.
Welcher Teil dauert am längsten? Dateien laden oder bearbeiten? –
@NickLarsen: Laden der Dateien. – Tim
Auch wenn das Laden am längsten dauert, kann Multithreading immer noch einen Gewinn bringen, da es zumindest den Verarbeitungsaspekt von der Gesamtlaufzeit (den meisten) entfernen kann. –