Was hat die Finder-Listenansicht in Lion geändert, um "Alle Größen berechnen" exponentiell schneller zu machen?

10

Schon lange bevor Mac OS X auf den Markt kam, konnten wir den Finder bitten, alle Größen zu berechnen , um die Gesamtsumme des lesbaren Dateigrößenbereichs in jedem Ordner für das betreffende Finder-Fenster zu ermitteln.

Finder - Listenansicht - Ansichtsoptionen anzeigen - Alle Größen berechnen

Ich habe die Größe der Listenansicht von Ordnern auf mehreren Macs getestet, bei denen es keine Rolle spielt, ob eine SSD vorhanden ist oder nicht, aber Lion ist so schnell bei der Berechnung von Größen. Ich bin gespannt, ob es eine neue Caching-Datenstruktur gibt oder ob Finder die verwendet Metadateninformationen von Spotlight oder einer ähnlichen Datenbank, um diese Berechnung immens zu beschleunigen.

bmike
quelle
1
Woher hast du das Fenster? Basierend auf der Schaltfläche "Als Standard verwenden" unten sieht es aus wie im Fenster "Ansichtsoptionen anzeigen" (<kbd> ⌘J </ kbd>), aber ich konnte im unteren Bereich nichts anzeigen.
Cajunluke
1
@CajunLuke Sie müssen Ihre Fensteransicht auf Liste ändern, bevor Sie das Fenster "Ansichtsoptionen anzeigen" öffnen.
pdd

Antworten:

3

Ich habe nicht beobachtet, dass Lion beim Berechnen der Größe von Ordnern (und Paketen / Paketen) beim ersten Berechnen von Größen in einem Ordner schneller ist. Nachfolgende Berechnungen im selben Ordner scheinen jedoch viel schneller zu sein.

Ein Teil der wahrgenommenen Schnelligkeit kann darin bestehen, dass der Finder die zuvor berechneten Größen sofort in grauem Text anzeigt, während die Ordnergrößen neu berechnet werden, anstatt "-" anzuzeigen, bis sie berechnet wurden. Nachdem die Größe eines Ordners neu berechnet wurde, wird die Nummer aktualisiert (wenn sich die Größe geändert hat) und schwarz.

Da der Finder zuvor berechnete Ordnergrößen beobachtbar zwischenspeichert, werden möglicherweise nur Größen für Ordner neu berechnet, die sich seit der letzten Berechnung geändert haben.

joelseph
quelle
Ich denke, das ist der Kern des Problems. Das Caching ist viel besser und teilweise oder veraltete Ergebnisse werden schrittweise angezeigt. Ich kann nicht sagen, ob der Algorithmus so angepasst ist, dass er die angezeigten Daten ausfüllt, aber das Cacheing allein scheint die Antwort auf meine Freude zu sein, wie es jetzt in der Praxis funktioniert.
bmike
Nach einigen Monaten genauer Beobachtung sind Sie völlig korrekt. Der Caching-Mechanismus ist jetzt so gut, dass diese Daten auf den Macs, die ich seit einiger Zeit verwende, fast immer korrekt und augenblicklich sind. Nur auf einem neuen Mac kurz nach Neuinstallation oder Konföderation ist die ältere Geschwindigkeit erkennbar, da das Betriebssystem die Informationen vollständig erfassen muss.
bmike
7

Vor Lion zeigte die Spalte Dateigröße in Finder.app die Größe an, die jede Datei auf der Festplatte benötigt, nicht die genaue Dateigröße. Beispielsweise wurden 1-Byte-Dateien als 4 KB angezeigt, da sie auf einem HFS-formatierten System tatsächlich 4 KB Speicherplatz beanspruchen. Es gab keine einfache Möglichkeit, die tatsächliche Dateigröße von 1 Byte zu ermitteln, außer Datei › ls -lsaInformationen abrufen (oder eine andere App wie Terminal.app und dann oder einen Finder.app-Ersatz wie TotalFinder.app zu verwenden ).

(Früher habe ich dies als Fehler 8926275 auf bugreport.apple.com gemeldet .)

Ab Lion wurde dieses Verhalten korrigiert, und in der Spalte Dateigröße wird nun die genaue Dateigröße für jede Datei angezeigt und nicht mehr die Größe, die sie auf der Festplatte zuweist (was ohnehin vom Dateisystem abhängt).

Da diese Größen die gleichen Zahlen sind, die Sie von der lsBinärdatei in Terminal erhalten würden, sind sie viel effizienter zu berechnen.

Mathias Bynens
quelle
1
Das ist auch ein tolles Detail. Da SSDs immer häufiger eingesetzt werden und der Speicher mit Snapshots immer ausgefeilter wird, ist es wohl längst vorbei, sich keine Gedanken mehr darüber zu machen, wie viel Speicherplatz eine bestimmte Instanz einer Datei belegt, sondern nur über die logische Größe der Dateien im Gegensatz zur physischen.
bmike
Ich verstehe das nicht Wie ist das effizienter? Ist nicht ein einziger stat(2)Anruf für das Abrufen beider Nummern verantwortlich? Und zeigt ls(1)überhaupt nicht die tatsächliche Größe von Bundles / Paketen / Ordnern an, daher habe ich keine Ahnung, warum dies relevant ist.
Ken
@ Ken lszeigt Dateigrößen für normale Dateien. statkann das gleiche für eine einzelne Datei tun. Mein Punkt ist, dass die „zusätzliche Arbeit“, die zum Berechnen der Größe von Bundles / Paketen / Ordnern erforderlich ist, jetzt nur noch für Bundles / Pakete / Ordner benötigt wird, nicht mehr für reguläre Dateien.
Mathias Bynens
Mathias: Ja, lszeigt Dateigrößen für normale Dateien, nicht für Bundles (das habe ich gesagt). Dies geschieht durch einen Anruf stat. Welche "zusätzliche Arbeit" war zuvor für reguläre Dateien erforderlich? Ein einzelner statAufruf gibt sowohl die Blöcke ( st_blocks) als auch die Bytes ( st_size) zurück.
Ken
1

Es würde mich nicht wundern, wenn sie Spotlight-Metadaten zum Zwischenspeichern von Dateigrößen verwenden würden. Wenn Sie bereits FSEvents verwenden, um alle Änderungen im Dateisystem zu verfolgen, und (möglicherweise) Time Machine, um alle diese Änderungen zu sichern, sind die zusätzlichen Kosten für die Berechnung und Speicherung der aggregierten Dateigrößen vernachlässigbar.

Cajunluke
quelle
Ich werde sehen, ob ich fs_events dazu bringen kann, die Beans zu verschütten, wenn es sich um Metadaten handelt oder auf andere Weise. Ich würde es lieben, Spotlight-Daten zu lesen - habe aber noch keine direkten Beweise.
bmike
1

Ab OS X Lion hat Apple eine SQLite-Datenbank hinzugefügt, die das Betriebssystem für die Dateiverfolgung in Systemfunktionen wie Spotlight verwendet. Das Abfragen aus einer SQLite-Datenbank, anstatt das Dateisystem jedes Mal zu überprüfen, ist höchstwahrscheinlich die Ursache für die Leistungsverbesserung. In John Siracusas OS X Lion-Test werden die Änderungen am Dateisystem in Lion ausführlich erläutert. Insbesondere finden Sie hier eine Erklärung zur neuen SQLite-Datenbank.

Hoffe das hilft.

Christian Correa
quelle
Dies ist ein sehr netter Link. Die SQLite-Datenbank wird jedoch auf allen meinen Macs angezeigt, um nur Dokumente mit Versionen zu verfolgen, die eine kleine Teilmenge der gesamten Dateien auf dem Laufwerk darstellen. Wenn Sie einen Link zu einer Datenbank finden, in der alle Dateigrößen gespeichert sind, wäre das gelinde gesagt interessant, da das Dateisystem bereits eine Datenbank dafür ist, oder?
bmike