Come è veloce DaisyDisk?

4

DaisyDisk analizza il veloce HD del mio Mac rispetto a, diciamo, du . Mi chiedo quale sia il trucco. Sospetto che non sarebbe così veloce su file system non Mac, ma non ho provato. Qualsiasi indizio?

    
posta Morpheu5 30.11.2016 - 11:38
fonte

4 risposte

3

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 eseguire du / >/dev/null e verifica se è più veloce di DaisyDisk. Si prega di notare che il filesystem potrebbe essere stato memorizzato nella cache dopo quale è andato prima per scopi temporali, quindi la seconda esecuzione avrà questo vantaggio.

du è piuttosto veloce poiché considera solo le voci della directory e riporta il percorso e le dimensioni dei file. L'unico modo per sapere cosa sarebbe un file è di indovinare l'estensione del file o guardare il file per determinarne il tipo (ad esempio byte "magici" UNIX). Il percorso di estensione del file è veloce, esaminando il file è ovviamente molto più lento dal momento che devi estrarre il file.

Con l'output du , è possibile determinare rapidamente la vista delle directory di primo livello; puoi filtrare quello in codice e fare una rappresentazione come DaisyDisk e mostrare solo sezioni di torta di dimensioni diverse. Se eseguono il drill down nelle directory (ad es. / Utenti), ripeti il processo ma ti concentri solo su quel livello. Dato che DaisyDisk ti mostra solo i primi 10 o 20 maiali dello spazio, non ha bisogno di entrare nei dettagli per capire quali sono i file più piccoli (notalo che li raggruppa convenientemente in "Smaller Files 750MB" o qualche etichetta). A questo punto, non aveva ancora bisogno di scavare a fondo nei file reali e forse se non avesse indovinato per estensione doveva solo determinare la "magia" di alcuni file di grandi dimensioni che va molto veloce.

Quindi quello che probabilmente stiamo vedendo è che ha determinato rapidamente il nome, il percorso e le dimensioni di ogni file sul disco (come può dimostrare du ), ma abilmente mostra solo i criminali principali per aiutarti a ottenere ciò che ti interessa perché la maggior parte delle persone non usa uno strumento come questo per ottenere i piccoli file pignoli; andrai al Finder per esaminare i file se ti disturbi anche a quel livello . Non sembra che ci sia nulla di speciale qui, tranne che deve solo esaminare il tipo o il contenuto del file quando l'utente lo richiede espressamente e il programma evita di fare quel lavoro pesante la maggior parte del tempo.

Quindi cosa rende DaisyDisk speciale rispetto a (diciamo) l'applicazione gratuita "Grand Perspective" per OSX? Interfaccia slick per uno (mi piace il file di esaminare e trascinare per raccogliere / eliminare la funzione), ma penso anche che GP esamini i file mentre esegue la scansione poiché mostra tutto nella sua vista grafica e i colori per tipo di file. Potresti eseguire il meccanismo del colore in base al tipo con un approccio du , ma stai solo ipotizzando in base all'estensione del file e / o al punto in cui hai trovato il file.

Tutto sommato, è un'applicazione perfetta con un'interfaccia intelligente. Perché è veloce? Perché sembrano aver preso scorciatoie per evitare il sollevamento pesante fino a quando non sarebbe assolutamente necessario. Per me, sto bene con Grand Perspective: -)

    
risposta data 30.11.2016 - 21:26
fonte
8

Sono lo sviluppatore di DaisyDisk. Dovrei dilungarmi per spiegare come lo otteniamo dal punto di vista tecnico, ma posso assicurarvi 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 lettore di dischi. Questo è particolarmente evidente sulle unità SSD. Non ho ancora provato a confrontarlo con "du".

    
risposta data 01.12.2016 - 16:12
fonte
3

Non sono in grado di misurare alcuna grande differenza in du o DaisyDisk a parte l'app nativa in alcuni casi più lenta dello strumento da riga di comando.

time du ~ > /dev/null 2>&1

La prima corsa di du era 0m7.947s e la seconda era 0m5.465s e DaisyDisk era di circa 8 secondi con un cronometro entrambe le volte.

La mia ipotesi è che si vedano ritardi dovuti all'output dello schermo degli strumenti della riga di comando che misurano più del disco. Stai utilizzando DaisyDisk per eseguire la scansione come amministratore?

    
risposta data 01.12.2016 - 00:53
fonte
3

Ho notato che du utilizza getattrlist() in una singola modalità thread. Avevo trovato un codice che Apple apriva di recente con l'uscita di High Sierra. Daisydisk utilizza probabilmente getattrlistbulk() con più thread, poiché ho notato un utilizzo core della CPU più uniforme.

Sul mio Mac, il daisydisk è sempre 2x - 3 volte più veloce di du . Ho provato questo con la mia cartella principale di 100G, 20K directory, 350K file. Il file system esegue alcuni caching, 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 snippet di codice per getattrlistbulk - link

Questo snippet utilizza ancora un singolo thread e il thread era legato all'IO, il mio utilizzo della CPU era solo del 35%. Se in qualche modo diffondete il lavoro su più thread, mi aspetto che questo sia super veloce.

    
risposta data 04.09.2018 - 07:43
fonte

Leggi altre domande sui tag