Risposte:
Non ho mai usato DaisyDisk, ma a giudicare dalla demo video sul loro sito, sembra che stiano usando alcuni trucchi per renderlo veloce.
Prima di tutto, sei sicuro che du
sia più lento? Prova a correre du / >/dev/null
e vedi se è più veloce di DaisyDisk .. badate bene, il filesystem potrebbe essere stato memorizzato nella cache dopo quello che è andato per primo per scopi di temporizzazione, quindi la seconda esecuzione avrà quel vantaggio.
du
è piuttosto veloce poiché esamina solo le voci della directory e riporta il percorso e le dimensioni del file. L'unico modo in cui potresti sapere cos'è un file sarebbe fare un'ipotesi dall'estensione del file o guardare il file per determinarne il tipo (ad esempio byte "magici" di UNIX). Il percorso di estensione del file è veloce, l'esame del file è ovviamente molto più lento poiché devi recuperare il file.
Con l' du
output, è possibile determinare rapidamente la vista delle directory di livello superiore; puoi filtrarlo nel codice e creare una rappresentazione come fa DaisyDisk e mostrare solo sezioni di torta di dimensioni. Se eseguono il drill-down nelle directory (ad es. / Users), ripeti il processo ma ti concentri solo su quel livello. Poiché DaisyDisk mostra solo i primi 10 o 20 maiali spaziali, non è necessario entrare nei dettagli per capire quali sono i file più piccoli (si noti che li raggruppa convenientemente in "File più piccoli da 750 MB" o in qualche etichetta). A questo punto, non aveva ancora bisogno di scavare così in profondità nei file reali e forse se non indovinasse per estensione doveva solo determinare la "magia" di alcuni file di grandi dimensioni che va molto veloce.
Quindi quello che stiamo probabilmente vedendo è che ha determinato rapidamente il nome, il percorso e le dimensioni di ogni file sull'unità (come si du
può dimostrare), ma mostrando abilmente solo i principali autori di reato per aiutarti a ottenere ciò che ti interessa dal momento che la maggior parte la gente non utilizzerà uno strumento come questo per ottenere i piccoli file nitidi; andrai al Finder per esaminare i file se ti preoccupi anche a quel livello . Qui non sembra esserci nulla di speciale, tranne che deve solo esaminare il tipo di file o il contenuto quando l'utente lo richiede espressamente e il programma evita di fare quel lavoro pesante per la maggior parte del tempo.
Cosa rende speciale DaisyDisk rispetto a (diciamo) l'applicazione gratuita "Grand Perspective" per OSX? Interfaccia semplice per uno (mi piace il file esamina e trascino per raccogliere / eliminare la funzione), ma penso anche che GP esamini i file mentre scansiona poiché mostra tutto nella sua vista grafica e colori per tipo di file. Puoi anche usare il colore per tipo meccanismo con un du
approccio, ma stai solo indovinando in base all'estensione del file e / o dove hai trovato il file.
Tutto sommato, si tratta di un'applicazione elegante con un'interfaccia intelligente. Perché è veloce? Perché sembrano aver preso scorciatoie per evitare un sollevamento pesante fino a quando non sarebbe assolutamente necessario. Per me, sto bene con Grand Perspective :-)
Sono lo sviluppatore di DaisyDisk. Dovrei fare di tutto per spiegare come lo realizziamo dal punto di vista ingegneristico, ma posso rassicurarti sul fatto che l'app non crea "scorciatoie" o "trucchi". La scansione è reale e completa.
Come già accennato, è difficile effettuare una misurazione precisa a causa della memorizzazione nella cache del disco. Ogni esperimento ti darà un tempo diverso, a seconda di molti fattori. Ma è vero che DaisyDisk è di gran lunga più veloce di qualsiasi altro scanner per dischi. Ciò è particolarmente evidente nelle unità SSD. Non ho provato a confrontarlo con "du" però.
du
) per creare l'output veloce. Il tipo di esame dovrebbe essere assunto rapidamente dall'estensione del file (o dove è stato trovato, ad es. Dir musica di iTunes) o esaminando il file (più lentamente). Vedendo come i tempi di bmike corrispondessero strettamente du
a DD, suppongo che DD non stia esaminando il contenuto del file. Ad ogni modo, bella app e ottima interfaccia utente!
Non sono in grado di misurare alcuna grande differenza in du
o DaisyDisk diverso dall'app nativa è più lento in alcuni casi rispetto allo strumento da riga di comando.
time du ~ > /dev/null 2>&1
La prima manche è du
stata 0m7.947s e la seconda era 0m5.465s e DaisyDisk è stata di circa 8 secondi con un cronometro entrambe le volte.
Suppongo che tu stia riscontrando ritardi dovuti all'output dello schermo degli strumenti della riga di comando che misura più del disco. Stai usando DaisyDisk per scansionare come amministratore?
Ho notato che du
utilizza getattrlist()
in una modalità a thread singolo. Avevo trovato un po 'di codice aperto da Apple qualche volta con la versione High Sierra. Daisydisk probabilmente utilizza getattrlistbulk()
più thread, poiché ho notato un utilizzo più uniforme del core della CPU.
Sul mio Mac, daisydisk è sempre 2x - 3x più veloce di du
. Ho provato questo con la mia cartella home di 100G, directory 20K, file 350K. Il file system esegue un po 'di memorizzazione nella cache, quindi è meglio testarlo su un sistema freddo o con una directory di grandi dimensioni per ridurre i vantaggi della memorizzazione nella cache.
Ho trovato utile questo frammento di codice per getattrlistbulk
-
https://www.snip2code.com/Snippet/526248/A-sample-on-how-to-properly-use-getattrl
Questo frammento utilizza ancora un singolo thread e il thread era associato a IO, il mio utilizzo della CPU era solo del 35% circa. Se in qualche modo distribuisci il lavoro su più thread, mi aspetto che questo sia super veloce.