Skip to content

Reduz a memoria da varredura - #18

Merged
manfredjr merged 2 commits into
mainfrom
memoria
Oct 1, 2026
Merged

manfredjr merged 2 commits into
mainfrom
memoria

Conversation

@manfredjr

Copy link
Copy Markdown
Owner

O que muda

  • .exe sem compressão, por decisão do Manfred em 01/10/2026.
    • Comprimido, o .exe tinha 67 MB, mas o .NET descomprimia as bibliotecas na memória ao abrir.
    • Agora o .exe tem cerca de 149 MB, e a memória cai uns 80 MB.
  • Conjuntos de nomes e de identificadores compactos. A varredura guarda um identificador por arquivo, para o hard link somar uma vez, e cada nome diferente. Cada faixa virou uma tabela aberta de 8 bytes por posição. O nome só é criado quando é novo.
  • Pendências:
    • a meta de memória da varredura ficou fechada;
    • a janela, que segue acima de 300 MB num disco com 1,1 milhão de arquivos, ficou registrada, com o motivo e o próximo passo.

Medidas

Situação Pico pela linha de comando Pico da janela
Antes, comprimido cerca de 350 MB cerca de 480 MB
Agora, sem compressão 250 a 260 MB 390 a 430 MB

Medidas num disco com 1,1 milhão de arquivos, só com varredura, sem ação nenhuma.

Como testar

  1. Gerar o .exe com ferramentas\publicar.cmd. Ele fica com cerca de 149 MB.
  2. Rodar powershell -File ferramentas\medir-memoria.ps1 C: e conferir o pico.
  3. Abrir a janela, varrer o C: e conferir que tudo funciona como antes, inclusive abrindo de um pendrive ou de uma pasta de rede.

Autores: Manfred Heil Junior

A varredura guarda um identificador por arquivo, para o hard link somar uma vez, e cada nome de arquivo diferente. Com HashSet, cada item custava cerca de 20 bytes e o nome era criado antes de saber se ja existia. Agora cada faixa e uma tabela aberta de 8 bytes por posicao, e o nome so e criado quando e novo.

Autores: Manfred Heil Junior
Comprimido, o .exe tinha 67 MB, mas o .NET descomprimia as bibliotecas na memoria ao abrir, cerca de 80 MB a mais. Sem compressao, o .exe tem 149 MB e o pico de uma varredura com 1,1 milhao de arquivos fica entre 250 e 260 MB, dentro da meta. Decisao do Manfred em 01/10/2026. A janela segue acima da meta e fica registrada nas pendencias.

Autores: Manfred Heil Junior
@manfredjr
manfredjr merged commit 26f5875 into main Oct 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant