5 votes

Comment DaisyDisk est-il si rapide ?

DaisyDisk scanne le disque dur de mon Mac pour le comparer à, disons, du . Je me demande quelle est l'astuce. Je pense que ce ne serait pas aussi rapide sur les systèmes de fichiers non-Mac, mais je n'ai pas essayé. Des indices ?

10voto

swa16 Points 301

Je suis le développeur de DaisyDisk. Il faudrait que j'explique en détail comment nous y parvenons du point de vue technique, mais je peux vous assurer que l'application ne fait pas de "raccourcis" ou de "trucs". La numérisation est réelle et complète.

Comme nous l'avons déjà mentionné, il est assez difficile de faire une mesure précise à cause de la mise en cache du disque. Chaque expérience vous donnera un temps différent, en fonction de nombreux facteurs. Mais il est vrai que DaisyDisk est de loin beaucoup plus rapide que tout autre scanner de disque. Cela est particulièrement visible sur les disques SSD. Je n'ai pas essayé de le comparer avec "du" cependant.

4voto

Jenea Points 2702

Je n'ai jamais utilisé DaisyDisk, mais à en juger par la démo vidéo sur leur site, il semble qu'ils utilisent quelques astuces pour le rendre rapide.

Tout d'abord, êtes-vous sûr que du est plus lent ? Essayez d'exécuter du / >/dev/null et voir s'il est plus rapide que DaisyDisk attention, le système de fichiers peut avoir été mis en cache après ce qui a été fait en premier pour des raisons de timing, donc la deuxième exécution aura cet avantage.

du est assez rapide puisqu'il ne fait que regarder les entrées du répertoire et rapporte le chemin et la taille des fichiers. La seule façon de savoir ce qu'est un fichier est de faire une supposition à partir de l'extension du fichier ou de regarder le fichier pour déterminer son type (par exemple, les octets "magiques" UNIX). La voie de l'extension de fichier est rapide, l'examen du fichier est évidemment beaucoup plus lent puisque vous devez extraire le fichier.

Avec le du vous pouvez rapidement déterminer la vue des répertoires de premier niveau ; vous pouvez filtrer cela dans le code et faire une représentation comme DaisyDisk le fait et montrer simplement des tranches de tarte de taille. S'ils descendent dans les répertoires (par exemple /Users), vous répétez le processus mais en vous concentrant uniquement sur ce niveau. Puisque DaisyDisk ne vous montre que les 10 ou 20 plus gros consommateurs d'espace, il n'a pas besoin d'entrer dans les détails pour déterminer quels sont les plus petits fichiers (remarquez qu'il les regroupe commodément dans "Smaller Files 750MB" ou une autre étiquette). À ce stade, il n'a toujours pas besoin de creuser aussi profondément dans les fichiers réels et peut-être que s'il ne devine pas par extension, il n'a qu'à déterminer la "magie" de quelques gros fichiers, ce qui va très vite.

Donc, ce que nous voyons probablement, c'est qu'il a rapidement déterminé le nom, le chemin et la taille de chaque fichier sur le disque (en tant que du peut démontrer), mais en ne montrant intelligemment que les principaux délinquants pour vous aider à atteindre ce qui vous intéresse, car la plupart des gens n'utiliseront pas un outil comme celui-ci pour obtenir les petits fichiers les plus minutieux ; vous irez dans le Finder pour examiner les fichiers. si vous vous donnez la peine de le faire à ce niveau . Il ne semble pas vraiment y avoir de particularité ici, si ce n'est qu'il n'a besoin d'examiner le type ou le contenu du fichier que lorsque l'utilisateur le demande spécifiquement et que le programme évite de faire ce travail lourd la plupart du temps.

Alors, qu'est-ce qui rend DaisyDisk spécial par rapport à (disons) l'application gratuite "Grand Perspective" pour OSX ? D'une part, l'interface élégante (j'aime bien la fonction d'examen des fichiers et de glissement vers la collecte/suppression), mais aussi, je pense que GP examine les fichiers pendant qu'il scanne, car il montre tout dans sa vue graphique et les couleurs par type de fichier. Vous pourriez faire le mécanisme de couleur par type avec une fonction du mais vous ne pouvez que deviner en fonction de l'extension du fichier et/ou de l'endroit où vous avez trouvé le fichier.

Dans l'ensemble, il s'agit d'une application astucieuse dotée d'une interface intelligente. Pourquoi est-elle rapide ? Parce qu'il semble qu'ils aient pris des raccourcis pour éviter les opérations lourdes jusqu'à ce qu'elles soient absolument nécessaires. Pour ma part, je me contente de Grand Perspective :-)

3voto

Oskar Points 1242

Je ne suis pas capable de mesurer une grande différence dans du ou DaisyDisk autre que l'application native est plus lente dans certains cas que l'outil en ligne de commande.

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

La première série de du était de 0m7.947s et la seconde de 0m5.465s et DaisyDisk était d'environ 8 secondes avec un chronomètre les deux fois.

Je pense que vous constatez des retards dus à la sortie écran des outils de ligne de commande qui mesurent une plus grande partie du disque. Utilisez-vous DaisyDisk pour analyser en tant qu'administrateur ?

3voto

Leo Points 31

J'ai remarqué que du utilise getattrlist() en mode single thread. J'ai trouvé du code que apple a mis en libre accès il y a quelques temps avec la version High Sierra. Daisydisk utilise probablement getattrlistbulk() avec plusieurs threads, car j'ai remarqué une utilisation plus régulière du cœur du processeur.

Sur mon Mac, daisydisk est toujours 2x - 3x plus rapide que du . J'ai testé ceci avec mon dossier personnel de 100G, 20K répertoires, 350K fichiers. Le système de fichiers effectue une certaine mise en cache, il est donc préférable de tester ceci sur un système froid, ou avec un grand répertoire pour réduire les avantages de la mise en cache.

J'ai trouvé cet extrait de code utile pour getattrlistbulk - https://www.snip2code.com/Snippet/526248/A-sample-on-how-to-properly-use-getattrl

Ce snippet utilise toujours un seul thread, et le thread était lié aux entrées-sorties, mon utilisation du CPU était d'environ 35% seulement. Si vous répartissez d'une manière ou d'une autre le travail sur plusieurs threads, je m'attends à ce que ce soit super rapide.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X