Desde mucho antes de que Mac OS X apareciera en escena, hemos podido pedirle al Finder que calcule todos los tamaños para determinar la suma total del espacio de tamaño de archivo legible contenido en cada carpeta para la ventana del Finder en cuestión.
He probado el tamaño de la vista de lista de carpetas en varias Mac donde no importa si hay un SSD o no, pero Lion es tan rápido en el cálculo de tamaños. Tengo curiosidad por saber si hay alguna nueva estructura de datos de almacenamiento en caché o si Finder está usando el información de metadatos de Spotlight o una base de datos similar para acelerar enormemente este cálculo.
lion
finder
performance
bmike
fuente
fuente
Respuestas:
No he observado que Lion sea más rápido al calcular los tamaños de carpeta (y paquete / paquete) durante la primera vez que calcula tamaños en una carpeta. Sin embargo, los cálculos posteriores en la misma carpeta parecen ser mucho más rápidos.
Parte de la rapidez percibida puede ser que Finder mostrará inmediatamente los tamaños calculados previamente en texto gris mientras recalcula los tamaños de carpeta, en lugar de mostrar "-" hasta que se haya calculado. Después de que se haya recalculado el tamaño de una carpeta, el número se actualizará (si el tamaño ha cambiado) y se volverá negro.
Debido a que el Finder está almacenando en caché de forma observable los tamaños de carpeta previamente calculados, es posible que solo vuelva a calcular los tamaños de las carpetas que han cambiado desde la última vez que se calculó.
fuente
Antes de Lion, la columna Tamaño del archivo en Finder.app mostraba el tamaño que cada archivo requiere en el disco duro, no el tamaño exacto del archivo. Por ejemplo, los archivos de 1 byte se muestran como 4 KB porque de hecho ocupan 4 KB de espacio en un sistema con formato HFS. No había una manera fácil de ver el tamaño real del archivo de 1 byte, aparte de abrir Archivo ›Obtener información (o usar una aplicación diferente, como Terminal.app y luego usar
ls -lsa
, o un reemplazo Finder.app como TotalFinder.app ).(De vuelta en el día, me informó de esto como error 8926275 en bugreport.apple.com ).
A partir de Lion, este comportamiento se ha corregido, y la columna Tamaño del archivo ahora mostrará el tamaño exacto del archivo para cada archivo en lugar del tamaño que asigna en el disco duro (que de todos modos depende del sistema de archivos).
Dado que estos tamaños son los mismos números que obtendría del
ls
binario en Terminal, son mucho más eficientes para calcular.fuente
stat(2)
llamada responsable de recuperar ambos números? Yls(1)
no muestra el tamaño real de los paquetes / paquetes / carpetas, por lo que no tengo idea de por qué es relevante.ls
muestra los tamaños de archivo muy bien para los archivos normales.stat
puede hacer lo mismo para un solo archivo. Mi punto es que el "trabajo extra" necesario para calcular los tamaños de paquetes / paquetes / carpetas ahora solo se necesita para paquetes / paquetes / carpetas, ya no para archivos normales.ls
muestra los tamaños de archivo para archivos normales, no paquetes (eso es lo que dije). Hace esto llamandostat
. ¿Qué "trabajo adicional" se requería para los archivos normales anteriormente? Una solastat
llamada devuelve ambos bloques (st_blocks
) y bytes (st_size
).No me sorprendería si estuvieran usando metadatos de Spotlight para almacenar en caché los tamaños de los archivos. Si ya está utilizando FSEvents para rastrear todos los cambios en el sistema de archivos y (potencialmente) Time Machine para respaldar todos esos cambios, el costo adicional de calcular y almacenar tamaños de archivo agregados es insignificante.
fuente
Comenzando con OS X Lion, Apple ha agregado una base de datos SQLite que el sistema operativo utiliza para el seguimiento de archivos en funciones del sistema como Spotlight. La consulta desde una base de datos SQLite en lugar de inspeccionar el sistema de archivos cada vez es más que probable que sea la causa de la mejora del rendimiento. La revisión OS X Lion de John Siracusa explica en profundidad los cambios en el sistema de archivos en Lion. En particular, aquí encontrará una explicación sobre la nueva base de datos SQLite.
Espero que esto ayude.
fuente