Desde muito antes de o Mac OS X entrar em cena, solicitamos ao Finder que calcule todos os tamanhos para determinar a soma total do espaço de tamanho de arquivo legível contido em cada pasta da janela do Finder em questão.
Testei o dimensionamento de pastas da exibição em lista em vários Macs, onde não importa se um SSD está presente ou não, mas o Lion é tão rápido no cálculo de tamanhos. Estou curioso para saber se há alguma nova estrutura de dados em cache ou se o Finder está usando o informações de metadados do Spotlight ou de um banco de dados semelhante para acelerar imensamente esse cálculo.
lion
finder
performance
bmike
fonte
fonte
Respostas:
Não observei que o Lion era mais rápido no cálculo de tamanhos de pastas (e pacotes / pacotes) durante a primeira vez que calcula tamanhos em uma pasta. No entanto, os cálculos subsequentes na mesma pasta parecem ser muito mais rápidos.
Parte da rapidez percebida pode ser que o Finder mostre imediatamente os tamanhos calculados anteriormente em texto cinza enquanto recalcula os tamanhos das pastas, em vez de mostrar "-" até que seja calculado. Depois que o tamanho de uma pasta for recalculado, o número será atualizado (se o tamanho tiver sido alterado) e ficará preto.
Como o Finder está observando o cache de tamanhos de pastas calculados anteriormente, é possível que apenas recalcule os tamanhos das pastas que foram alteradas desde a última vez em que foi calculado.
fonte
Antes do Lion, a coluna Tamanho do arquivo no Finder.app exibia o tamanho que cada arquivo requer no disco rígido, não o tamanho exato do arquivo. Por exemplo, arquivos de 1 byte foram exibidos como 4 KB, porque na verdade ocupam 4 KB de espaço em um sistema formatado em HFS. Não havia uma maneira fácil de ver o tamanho real do arquivo de 1 byte, além de abrir Arquivo ›Obter informações (ou usar um aplicativo diferente, como Terminal.app e depois usar
ls -lsa
, ou uma substituição do Finder.app como TotalFinder.app ).(Naquele dia, relatei isso como bug 8926275 em bugreport.apple.com .)
No Lion, esse comportamento foi corrigido e a coluna Tamanho do arquivo agora mostrará o tamanho exato do arquivo para cada arquivo, e não o tamanho que ele aloca no disco rígido (que depende do sistema de arquivos).
Como esses tamanhos são os mesmos números que você obteria do
ls
binário no Terminal, eles são muito mais eficientes para calcular.fonte
stat(2)
chamada não é responsável por recuperar os dois números? Els(1)
não mostra o tamanho real de bundles / packages / folders, por isso não faço ideia do porquê disso ser relevante.ls
mostra muito bem o tamanho dos arquivos para arquivos regulares.stat
pode fazer o mesmo para um único arquivo. O que quero dizer é que o “trabalho extra” necessário para calcular o tamanho dos pacotes configuráveis / pastas / agora é necessário apenas para pacotes configuráveis / pacotes / pastas, e não para arquivos regulares.ls
mostra o tamanho dos arquivos comuns, não os pacotes (foi o que eu disse). Faz isso chamandostat
. Que "trabalho extra" era necessário para arquivos regulares anteriormente? Uma únicastat
chamada retorna os blocos (st_blocks
) e bytes (st_size
).Eu não ficaria surpreso se eles estivessem usando os metadados do Spotlight para armazenar em cache os tamanhos dos arquivos. Se você já está usando o FSEvents para rastrear todas as alterações no sistema de arquivos e (potencialmente) o Time Machine para fazer backup de todas essas alterações, o custo adicional de calcular e armazenar tamanhos de arquivo agregados é insignificante.
fonte
A partir do OS X Lion, a Apple adicionou um banco de dados SQLite que o sistema operacional usa para rastreamento de arquivos em recursos do sistema, como o Spotlight. Consultar a partir de um banco de dados SQLite em vez de inspecionar o sistema de arquivos toda vez é mais do que provável a causa da melhoria de desempenho. A revisão do OS X Lion de John Siracusa explica detalhadamente as alterações no sistema de arquivos do Lion. Particularmente, aqui você encontrará uma explicação sobre o novo banco de dados SQLite.
Espero que isto ajude.
fonte