11 votes

Qu'est-ce qui a modifié l'affichage de la liste du Finder dans Lion pour rendre "Calculer toutes les tailles" exponentiellement plus rapide ?

Depuis bien avant l'arrivée de Mac OS X, il est possible de demander au Finder de Calculer toutes les tailles afin de déterminer la somme totale de l'espace de taille de fichier lisible contenu dans chaque dossier pour la fenêtre du Finder en question.

Finder - list view - show view options - Calculate all sizes

J'ai testé le dimensionnement de la vue en liste des dossiers sur plusieurs Macs où la présence ou non d'un SSD n'a pas d'importance, mais Lion est si rapide pour calculer les tailles que je suis curieux de savoir s'il existe une nouvelle structure de données en cache ou si le Finder utilise les informations de métadonnées de Spotlight ou d'une base de données similaire pour accélérer énormément ce calcul.

7voto

Jeff Bloom Points 225

Avant Lion, la colonne Taille du fichier dans Finder.app affichait la taille requise pour chaque fichier sur le disque dur, et non la taille exacte du fichier. Par exemple, les fichiers de 1 octet étaient affichés sous la forme de 4 Ko car ils occupent effectivement 4 Ko d'espace sur un système formaté en HFS. Il n'y avait pas de moyen facile de voir la taille réelle d'un fichier de 1 octet, à part ouvrir Fichier ' Obtenir des informations (ou utiliser une autre application, comme Terminal.app et ensuite utiliser ls -lsa ou un remplacement de Finder.app comme TotalFinder.app ).

(À l'époque, j'ai signalé ce problème comme étant le bogue 8926275 sur rapport de bug.apple.com .)

Depuis Lion, ce comportement a été corrigé, et la colonne Taille du fichier indique désormais la taille exacte de chaque fichier plutôt que la taille allouée sur le disque dur (qui dépend de toute façon du système de fichiers).

Étant donné que ces tailles sont les mêmes que celles que vous obtiendriez de la ls binaires en Terminal, ils sont beaucoup plus efficaces à calculer.

3voto

joelseph Points 10262

Je n'ai pas constaté que Lion était plus rapide pour calculer la taille des dossiers (et des paquets/boîtes) la première fois qu'il calcule la taille d'un dossier. Cependant, les calculs suivants dans le même dossier semblent être beaucoup plus rapides.

Une partie de la rapidité perçue peut être due au fait que le Finder affiche immédiatement les tailles précédemment calculées en texte gris pendant qu'il recalcule les tailles des dossiers, au lieu d'afficher "--" jusqu'à ce que le calcul soit terminé. Une fois que la taille d'un dossier a été recalculée, le numéro est mis à jour (si la taille a changé) et devient noir.

Étant donné que le Finder met en mémoire les tailles de dossiers calculées précédemment, il est possible qu'il ne recalcule les tailles que pour les dossiers qui ont changé depuis la dernière fois qu'elles ont été calculées.

2voto

Christian Correa Points 2980

Depuis OS X Lion, Apple a ajouté une base de données SQLite que le système d'exploitation utilise pour le suivi des fichiers dans des fonctions du système telles que Spotlight. L'interrogation d'une base de données SQLite plutôt que l'inspection du système de fichiers à chaque fois est plus que probablement la cause de l'amélioration des performances. Critique d'OS X Lion par John Siracusa explique en détail les modifications apportées au système de fichiers dans Lion. En particulier, Vous trouverez ici une explication sur la nouvelle base de données SQLite.

J'espère que cela vous aidera.

1voto

Robin Robinson Points 1031

Je ne serais pas surpris qu'ils utilisent les métadonnées Spotlight pour mettre en cache la taille des fichiers. Si vous utilisez déjà FSEvents pour suivre toutes les modifications du système de fichiers et (potentiellement) Time Machine pour sauvegarder toutes ces modifications, le coût supplémentaire du calcul et du stockage des tailles de fichiers agrégées est négligeable.

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