Che cosa ha cambiato la visualizzazione dell'elenco dei Finder in Lion per rendere "Calcola tutte le dimensioni" esponenzialmente più velocemente?


10

Sin da prima che Mac OS X entrasse in scena, siamo stati in grado di chiedere al Finder di calcolare tutte le dimensioni al fine di determinare la somma totale dello spazio delle dimensioni dei file leggibili contenuto in ciascuna cartella per la finestra del Finder in questione.

Finder - visualizzazione elenco - mostra opzioni di visualizzazione - Calcola tutte le dimensioni

Ho testato il dimensionamento della visualizzazione Elenco delle cartelle su diversi Mac in cui non importa se un SSD è presente o meno, ma Lion è così veloce nel calcolare le dimensioni Sono curioso se c'è qualche nuova struttura di dati nella cache o se Finder sta usando il informazioni sui metadati da Spotlight o da un database simile per accelerare immensamente questo calcolo.


1
Dove hai preso quella finestra? Sulla base del pulsante "Usa come valori predefiniti" in basso, sembra la finestra "Mostra opzioni di visualizzazione" (<kbd> ⌘J </kbd>), ma non ho trovato nulla da mostrare nella sezione in basso.
Cajunluke,

1
@CajunLuke è necessario cambiare la visualizzazione della finestra per elencarla prima di aprire la finestra "Mostra opzioni di visualizzazione".
pdd,

Risposte:


3

Non ho osservato Lion essere più veloce nel calcolare le dimensioni di una cartella (e pacchetto / pacchetto) durante la prima volta che calcola le dimensioni di una cartella. Tuttavia, i calcoli successivi nella stessa cartella sembrano essere molto più veloci.

Parte della rapidità percepita potrebbe essere che Finder mostrerà immediatamente le dimensioni precedentemente calcolate in testo grigio mentre ricalcola le dimensioni della cartella, anziché mostrare "-" fino a quando non viene calcolato. Dopo che le dimensioni di una cartella sono state ricalcolate, il numero si aggiorna (se le dimensioni sono cambiate) e diventa nero.

Poiché il Finder memorizza nella cache le dimensioni delle cartelle precedentemente calcolate, è possibile che stia ricalcolando solo le dimensioni per le cartelle che sono state modificate dall'ultima volta in cui è stato calcolato.


Penso che questo sia il nocciolo del problema. La memorizzazione nella cache è molto migliore e i risultati parziali o non aggiornati vengono visualizzati in modo incrementale. Non riesco a capire se l'algoritmo è ottimizzato per compilare i dati che sono in vista, ma il solo cache sembra essere la risposta al mio piacere per come funziona ora.
bmike

Dopo alcuni mesi di osservazione da vicino, hai perfettamente ragione. Il meccanismo di memorizzazione nella cache ora è così buono che sui Mac che ho usato per un po ', questi dati sono quasi sempre corretti e istantanei. Solo su un nuovo mac poco dopo la reinstallazione o la confederazione si nota la velocità precedente poiché il sistema operativo deve raccogliere interamente le informazioni.
bmike

7

Prima di Lion, la colonna Dimensione file in Finder.app visualizzava la dimensione richiesta da ciascun file sul disco rigido, non la dimensione esatta del file. Ad esempio, i file da 1 byte sono stati visualizzati come 4 KB perché occupano effettivamente 4 KB di spazio su un sistema formattato HFS. Non c'era modo semplice di vedere la dimensione effettiva del file di 1 byte, se non l'apertura di File ›Ottieni informazioni (o usando un'app diversa, come Terminal.app e poi usando ls -lsa, o una sostituzione Finder.app come TotalFinder.app ).

(In passato, l'ho segnalato come bug 8926275 su bugreport.apple.com .)

A partire da Lion, questo comportamento è stato corretto e la colonna Dimensione file ora mostrerà la dimensione esatta del file per ciascun file anziché la dimensione che alloca sul disco rigido (che dipende comunque dal file system).

Dato che queste dimensioni sono gli stessi numeri che potresti ottenere dal file lsbinario in Terminal, sono molto più efficienti da calcolare.


1
Anche questo è un dettaglio fantastico. Man mano che l'SSD diventa più prevalente e l'archiviazione diventa più sofisticata con le istantanee, suppongo che sia passato molto tempo a causa del fatto di smettere di preoccuparsi di quanto spazio occupa un'istanza specifica di un file e preoccuparsi solo della dimensione logica dei file rispetto a quella fisica.
bmike

Non lo capisco Come è più efficiente? Una singola stat(2)chiamata non è responsabile per il recupero di entrambi i numeri? E ls(1)non mostra affatto le dimensioni effettive di pacchetti / pacchetti / cartelle, quindi non ho idea del perché sia ​​rilevante.
Ken,

@Ken lsmostra le dimensioni dei file bene per i file normali. statpuò fare lo stesso per un singolo file. Il mio punto è che il "lavoro extra" necessario per calcolare le dimensioni di pacchetti / pacchetti / cartelle è ora necessario solo per pacchetti / pacchetti / cartelle, non più per i file normali.
Mathias Bynens,

Mathias: Sì, lsmostra le dimensioni dei file normali, non i pacchetti (è quello che ho detto). Lo fa chiamando stat. Quale "lavoro extra" era richiesto in precedenza per i file regolari? Una singola statchiamata restituisce sia blocchi ( st_blocks) che byte ( st_size).
Ken,

1

Non sarei sorpreso se stessero usando i metadati Spotlight per memorizzare nella cache le dimensioni dei file. Se stai già utilizzando FSEvents per tenere traccia di tutte le modifiche nel file system e (potenzialmente) Time Machine per eseguire il backup di tutte queste modifiche, il costo aggiuntivo di calcolo e archiviazione delle dimensioni dei file aggregati è trascurabile.


Vedrò se riesco a far sì che fs_events sparga i bean se si tratta di metadati o altro. Mi piacerebbe leggere i dati dei riflettori, ma non ho ancora prove dirette.
bmike

1

A partire da OS X Lion, Apple ha aggiunto un database SQLite che il sistema operativo utilizza per il tracciamento dei file in funzionalità di sistema come Spotlight. Interrogare da un database SQLite anziché ispezionare il file system ogni volta è più che probabilmente la causa del miglioramento delle prestazioni. La recensione di OS X Lion di John Siracusa spiega in dettaglio le modifiche al file system in Lion. In particolare, qui troverai una spiegazione sul nuovo database SQLite.

Spero che questo ti aiuti.


Questo è un collegamento molto carino, tuttavia il database SQLite appare su tutti i miei mac per tracciare solo i documenti che hanno versioni che è un piccolo sottoinsieme dei file totali sul disco. Se riesci a trovare un collegamento a un database che memorizza tutte le dimensioni dei file, sarebbe interessante dire il minimo dato che il filesystem è già un database per fare questo, no?
bmike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.