Warum ist DaisyDisk so schnell?

DaisyDisk scannt die HD meines Mac blitzschnell im Vergleich zu beispielsweise du. Ich frage mich, was der Trick ist. Ich vermute, dass es auf Nicht-Mac-Dateisystemen nicht so schnell sein würde, aber ich habe es nicht versucht. Irgendwelche Hinweise?

Antworten (4)

Ich habe DaisyDisk noch nie benutzt, aber nach der Videodemo auf ihrer Website zu urteilen, scheinen sie ein paar Tricks anzuwenden, um es schnell zu machen.

Sind Sie sicher, dass dudas langsamer ist? Versuchen Sie, es auszuführen, du / >/dev/nullund sehen Sie, ob es schneller als DaisyDisk ist. Wohlgemerkt, das Dateisystem wurde möglicherweise zwischengespeichert, nachdem das Dateisystem aus Zeitgründen zuerst ausgeführt wurde, sodass der zweite Durchlauf diesen Vorteil hat.

duist ziemlich schnell, da es nur Verzeichniseinträge betrachtet und Pfad- und Dateigrößen meldet. Der einzige Weg, um zu wissen, was eine Datei ist, wäre, anhand der Dateierweiterung zu raten oder sich die Datei anzusehen, um ihren Typ zu bestimmen (z. B. UNIX „magische“ Bytes). Die Dateierweiterungsroute ist schnell, die Untersuchung der Datei ist offensichtlich viel langsamer, da Sie die Datei abrufen müssen.

Mit der duAusgabe konnte man schnell die Ansicht der Verzeichnisse der obersten Ebene bestimmen; Sie können das im Code filtern und eine Darstellung machen, wie es DaisyDisk tut, und nur große Tortenstücke anzeigen. Wenn sie in die Verzeichnisse (z. B. /Benutzer) eindringen, wiederholen Sie den Vorgang, konzentrieren sich jedoch nur auf diese Ebene. Da DaisyDisk Ihnen nur die Top 10 oder 20 Platzfresser zeigt, muss es nicht ins Detail gehen, um herauszufinden, was die kleineren Dateien sind (beachten Sie, dass es sie bequem in „Kleinere Dateien 750 MB“ oder eine andere Bezeichnung zusammenfasst). Zu diesem Zeitpunkt musste es noch nicht so tief in die eigentlichen Dateien eintauchen, und wenn es nicht per Erweiterung raten würde, musste es vielleicht nur die "Magie" einiger weniger großer Dateien bestimmen, was sehr schnell geht.

Was wir also wahrscheinlich sehen, ist, dass es schnell den Namen, den Pfad und die Größe jeder Datei auf dem Laufwerk ermittelt (wie dudemonstriert werden kann), aber geschickt nur die Top-Straftäter anzeigt, um Ihnen zu helfen, das zu erreichen, woran Sie am meisten interessiert sind Die Leute werden ein Tool wie dieses nicht verwenden, um an die pingelig kleinen Dateien zu kommen; Sie werden zum Finder gehen, um die Dateien zu untersuchen, wenn Sie sich auf dieser Ebene überhaupt die Mühe machen . Es scheint hier nicht wirklich etwas Besonderes zu sein, außer dass es den Dateityp oder Inhalt nur dann untersuchen muss, wenn der Benutzer ausdrücklich danach fragt, und das Programm diese schwere Arbeit die meiste Zeit vermeidet.

Was also macht DaisyDisk besonders im Vergleich zu (sagen wir) der kostenlosen „Grand Perspective“-Anwendung für OSX? Schickes Interface zum einen (ich mag die Datei untersuchen und zum Sammeln/Löschen ziehen), aber ich denke auch, dass GP die Dateien während des Scannens untersucht, da es alles in seiner grafischen Ansicht und Farben nach Dateityp anzeigt. Sie könnten den Mechanismus zum Färben nach Typ duauch mit einem Ansatz durchführen, aber Sie raten nur basierend auf der Dateierweiterung und / oder dem Ort, an dem Sie die Datei gefunden haben.

Alles in allem ist es eine raffinierte Anwendung mit einer cleveren Benutzeroberfläche. Warum ist es schnell? Weil sie anscheinend Abkürzungen genommen haben, um schweres Heben zu vermeiden, bis es absolut notwendig wäre. Für mich geht es mir gut mit Grand Perspective :-)

Ich vermutete, dass sie Abkürzungen nahmen, aber andererseits hatte ich die Bildschirmausgabe nicht berücksichtigt, was höchstwahrscheinlich die meiste Zeit in Anspruch nimmt (das vergesse ich immer wieder, verdammt IO! :)

Ich bin der Entwickler von DaisyDisk. Ich müsste ausführlich erklären, wie wir das auf der technischen Seite erreichen, aber ich kann Ihnen versichern, dass die App keine „Abkürzungen“ oder „Tricks“ macht. Das Scannen ist real und vollständig.

Wie bereits erwähnt, ist es aufgrund des Disk-Cachings schwierig, eine genaue Messung durchzuführen. Jedes Experiment gibt Ihnen eine andere Zeit, abhängig von vielen Faktoren. Aber es stimmt, dass DaisyDisk bei weitem schneller ist als jeder andere Disk-Scanner. Dies macht sich besonders bei SSD-Laufwerken bemerkbar. Ich habe jedoch nicht versucht, es mit "du" zu vergleichen.

Ich habe nicht "Abkürzungen" oder "Tricks" im negativen Sinne gemeint :-) Was ich meinte, war, dass DD anscheinend nicht den Typ jeder Datei scannte, indem es den Inhalt untersuchte, während es lief; Es werden nur die Katalog-/Verzeichniseinträge betrachtet (was dasselbe ist du), um die schnelle Ausgabe zu erstellen. Der Untersuchungstyp müsste entweder schnell anhand der Dateierweiterung (oder wo es gefunden wurde, zB iTunes-Musikverzeichnis) oder der Untersuchung der Datei (langsamer) angenommen werden. Da das Timing von bmike eng dumit DD übereinstimmt, würde ich davon ausgehen, dass DD den Dateiinhalt nicht untersucht. So oder so, schöne App und tolle Benutzeroberfläche!
Kein Problem, und danke für das Kompliment :) Natürlich muss DaisyDisk nicht den Inhalt von Dateien scannen, nur der Katalog (Name, Größe) reicht aus, um die größten Weltraumschweine zu finden. Genau das macht 'du' auch, nur weniger optimal (glaube ich). Ich wollte nur anmerken, dass es unmöglich ist, die größten „Straftäter“ zu finden, bis man sie alle gescannt hat, also gibt es nicht wirklich irgendwelche Abkürzungen. Außerdem verwenden wir bisher keine Erweiterungsinformationen (Typen) in DaisyDisk, sondern nur die Größe. (Vielleicht fügen wir es später hinzu.).
Danke @swa16, ich freue mich, von dir zu hören :) DD hat in der Tat eine großartige Benutzeroberfläche, mach weiter so!
Welchen Unterschied macht auch "Als Administrator scannen"? Es scheint so viel schneller zu sein!
Der Befehl „Als Administrator scannen“ schließt einfach die eingeschränkten Ordner in den Scan ein. Wenn DaisyDisk auf einen eingeschränkten Ordner stößt, verwendet es ein privilegiertes Hilfstool, um ihn mit erhöhten Berechtigungen zu scannen. Aber die Anzahl solcher Ordner ist relativ zur Gesamtzahl der Ordner gering, sodass dies die Scanzeit nicht wesentlich beeinflussen sollte.
Aber wenn Sie eine Festplatte bereits im normalen Modus gescannt haben, können Sie den Befehl „Schnelles erneutes Scannen als Administrator“ auswählen, dann werden nur die (zuvor übersprungenen) eingeschränkten Ordner gescannt. Dies ist in der Tat viel schneller als ein vollständiger erneuter Scan der Festplatte als Administrator (oder der anfängliche Scan als Administrator).

Ich kann keinen großen Unterschied in duoder DaisyDisk messen, außer der nativen App, die in einigen Fällen langsamer ist als das Befehlszeilentool.

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

Der erste Lauf duwar 0m7.947s und der zweite war 0m5.465s und DaisyDisk war beide Male ungefähr 8 Sekunden mit einer Stoppuhr.

Ich vermute, Sie sehen Verzögerungen aufgrund der Bildschirmausgabe der Befehlszeilentools, die mehr von der Festplatte messen. Verwenden Sie DaisyDisk zum Scannen als Administrator?

In der Tat ist das wahrscheinlich die Antwort. Plus, was @bjb gesagt hat :)

Ich habe bemerkt, dass es in einem Single-Thread-Modus duverwendet wird . getattrlist()Ich hatte Code gefunden, den Apple irgendwann mit der Veröffentlichung von High Sierra als Open Source veröffentlicht hatte. Daisydisk verwendet wahrscheinlich getattrlistbulk()mehrere Threads, da ich eine gleichmäßigere CPU-Kernauslastung festgestellt habe.

Auf meinem Mac ist daisydisk immer 2x - 3x schneller als du. Ich habe dies mit meinem Home-Ordner mit 100 GB, 20 KB Verzeichnissen und 350 KB Dateien getestet. Das Dateisystem führt etwas Caching durch, daher ist es besser, dies auf einem kalten System oder mit einem großen Verzeichnis zu testen, um die Caching-Vorteile zu reduzieren.

Ich fand dieses Code-Snippet hilfreich für getattrlistbulk- https://www.snip2code.com/Snippet/526248/A-sample-on-how-to-properly-use-getattrl

Dieses Snippet verwendet immer noch einen einzelnen Thread, und der Thread war IO-gebunden, meine CPU-Auslastung betrug nur etwa 35 %. Wenn Sie die Arbeit irgendwie auf mehrere Threads verteilen, gehe ich davon aus, dass dies super schnell geht.

Hervorragende Antwort- und API-Informationen. Ich finde ncdu auch angenehm schnell. Lesen Sie unbedingt alle Kommentare des Entwicklers von DaisyDisk – ziemlich coole Details apple.stackexchange.com/a/263198/5472