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.
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.
lion
finder
performance
bmike
quelle
quelle
Antworten:
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.
quelle
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 -lsa
Informationen 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
ls
Binärdatei in Terminal erhalten würden, sind sie viel effizienter zu berechnen.quelle
stat(2)
Anruf für das Abrufen beider Nummern verantwortlich? Und zeigtls(1)
überhaupt nicht die tatsächliche Größe von Bundles / Paketen / Ordnern an, daher habe ich keine Ahnung, warum dies relevant ist.ls
zeigt Dateigrößen für normale Dateien.stat
kann 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.ls
zeigt Dateigrößen für normale Dateien, nicht für Bundles (das habe ich gesagt). Dies geschieht durch einen Anrufstat
. Welche "zusätzliche Arbeit" war zuvor für reguläre Dateien erforderlich? Ein einzelnerstat
Aufruf gibt sowohl die Blöcke (st_blocks
) als auch die Bytes (st_size
) zurück.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.
quelle
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.
quelle