Sto lavorando a uno scanner di file di sistema che rivela informazioni su vari file (ad esempio dimensioni, ultimo utilizzo, duplicati, ecc.). Attualmente sto attraversando il file system una volta solo per ottenere una buona misura dei file che elaborerò, quindi eseguo il looping eseguendo l'elaborazione effettiva (informazioni sulle dimensioni, informazioni sull'hash, ecc.). Ovviamente questo crea immediatamente un intero livello di elaborazione "extra", ma mi consente di utilizzare le informazioni acquisite in precedenza per fornire all'utente alcuni "dati di avanzamento".
Ho cercato un buon meccanismo da utilizzare per accelerare il processo mostrando ancora i dati di avanzamento per gli utenti finali. Ho pensato di creare thread separati (uno per accodare i file a uno stack e l'altro per leggere dallo stack non appena disponibili), ma potrebbe essere rapidamente fuori controllo.
Nell'interesse di accelerare la scansione iniziale, eseguo attualmente un "percorso di ricerca" (o l'equivalente in base al sistema operativo in uso) e acquisisco tutto l'output. Questo, tuttavia, mi impedisce di negare intere sottocartelle (se l'utente desidera) in quanto elenca semplicemente ricorsivamente tutto. Alcuni sistemi operativi hanno opzioni a riga di comando per negare le directory, ecc., Ma ho bisogno di una soluzione multipiattaforma.
Quindi, aaaaaaall, detto questo, qualcuno ha qualche suggerimento algoritmico per essere veloce mentre fornisce progressi di qualità? Non sono fondamentalmente legato a una lingua specifica. Sto cercando più una visione di livello superiore di ciò che deve accadere.
Best.