¿Cómo es DaisyDisk tan rápido?

4

DaisyDisk escanea el HD de mi Mac a gran velocidad en comparación con, digamos, du . Me pregunto cuál es el truco. Sospecho que no sería tan rápido en sistemas de archivos que no sean Mac, pero no lo he intentado. ¿Alguna pista?

    
pregunta Morpheu5 30.11.2016 - 11:38

4 respuestas

3

Nunca he usado DaisyDisk, pero a juzgar por la demostración de video en su sitio, parece que están usando algunos trucos para hacerlo rápido.

En primer lugar, ¿estás seguro de que du es más lento? Intente ejecutar du / >/dev/null y vea si es más rápido que el DaisyDisk ... tenga en cuenta que es posible que el sistema de archivos se haya almacenado en caché después de lo que sucedió primero por razones de tiempo, por lo que la segunda ejecución tendrá esa ventaja.

du es bastante rápido ya que solo mira las entradas del directorio y los informes de la ruta y el tamaño de los archivos. La única forma de saber qué es un archivo sería hacer una conjetura por la extensión del archivo o mirar el archivo para determinar su tipo (por ejemplo, los bytes "mágicos" de UNIX). La ruta de la extensión del archivo es rápida, el examen del archivo es obviamente mucho más lento, ya que tiene que recuperar el archivo.

Con la salida du , puede determinar rápidamente la vista de los directorios de nivel superior; puede filtrar eso en el código y hacer una representación como lo hace DaisyDisk y solo mostrar rebanadas de pastel de tamaño. Si profundizan en los directorios (por ejemplo, / Usuarios), entonces repite el proceso pero solo se enfoca en ese nivel. Dado que DaisyDisk solo le muestra los 10 o 20 principales cerdos espaciales, no necesita entrar en detalles para descubrir qué son los archivos más pequeños (observe que los convierte en "Archivos más pequeños de 750 MB" o en alguna etiqueta). En este punto, todavía no era necesario profundizar tanto en los archivos reales y, tal vez, si no lo adivinaba por extensión, solo tenía que determinar la "magia" de unos pocos archivos grandes, lo cual es muy rápido.

Entonces, lo que probablemente estamos viendo es que determinó rápidamente el nombre, la ruta de acceso y el tamaño de cada archivo en la unidad (como du puede demostrar), pero de manera inteligente solo muestra a los principales infractores para ayudarlo a llegar a lo que usted necesita. estás interesado, ya que la mayoría de la gente no usará una herramienta como esta para obtener los pequeños archivos que no son tan delicados; Irás al Finder para examinar los archivos si te molestas en ese nivel . Realmente no parece haber nada especial aquí, excepto que solo necesita examinar el tipo de archivo o contenido cuando el usuario lo solicita específicamente y el programa evita hacer ese trabajo pesado la mayor parte del tiempo.

Entonces, ¿qué hace que DaisyDisk sea especial frente a (digamos) la aplicación gratuita "Grand Perspective" para OSX? Interfaz elegante para uno (me gusta el archivo de examinar y arrastrar para recopilar / eliminar la función), pero también creo que GP examina los archivos mientras escanea, ya que muestra todo en su vista gráfica y colores por tipo de archivo. También puede hacer el mecanismo de color por tipo con un enfoque de du , pero solo está adivinando sobre la base de la extensión del archivo y / o dónde encontró el archivo.

En definitiva, es una aplicación elegante con una interfaz inteligente. ¿Por qué es rápido? Porque parece que han tomado atajos para evitar levantar objetos pesados hasta que sea absolutamente necesario. Para mí, estoy bien con Grand Perspective :-)

    
respondido por el bjb 30.11.2016 - 21:26
8

Soy el desarrollador de DaisyDisk. Tendría que esforzarme para explicar cómo conseguimos esto en el lado de la ingeniería, pero puedo asegurarle que la aplicación no hace ningún "atajo" o "truco". El escaneo es real y completo.

Como ya se mencionó, es difícil hacer una medición precisa debido al almacenamiento en caché del disco. Cada experimento te dará un tiempo diferente, dependiendo de muchos factores. Pero es cierto que DaisyDisk es mucho más rápido que cualquier otro escáner de disco. Esto es especialmente notable en las unidades SSD. Aunque no he intentado compararlo con "du".

    
respondido por el swa16 01.12.2016 - 16:12
3

No puedo medir ninguna diferencia grande en du o DaisyDisk que no sea la aplicación nativa es más lenta en algunos casos que la herramienta de línea de comandos.

time du ~ > /dev/null 2>&1

La primera ejecución de du fue 0m7.947s y la segunda fue 0m5.465s y DaisyDisk fue aproximadamente 8 segundos con un cronómetro en ambas ocasiones.

Supongo que está viendo retrasos debido a la salida de pantalla de las herramientas de la línea de comandos que miden más del disco. ¿Está utilizando DaisyDisk para escanear como administrador?

    
respondido por el bmike 01.12.2016 - 00:53
3

Me he dado cuenta de que du usa getattrlist() en un modo de subproceso único. Encontré algún código que Apple abrió en algún momento con el lanzamiento de High Sierra. Daisydisk probablemente usa getattrlistbulk() con múltiples subprocesos, ya que noté un uso más uniforme de la CPU.

En mi Mac, el daisydisk es siempre 2x - 3x más rápido que du . He probado esto con mi carpeta de inicio de 100G, directorios de 20K, archivos de 350K. El sistema de archivos realiza un almacenamiento en caché, por lo que es mejor probar esto en un sistema frío o con un directorio grande para reducir los beneficios del almacenamiento en caché.

Encontré este fragmento de código útil para getattrlistbulk - enlace

Este fragmento de código todavía usa un solo hilo, y el hilo estaba enlazado a IO, el uso de mi CPU fue solo del 35%. Si de alguna manera distribuyes el trabajo en múltiples hilos, espero que esto sea súper rápido.

    
respondido por el Leo 04.09.2018 - 07:43

Lea otras preguntas en las etiquetas