Pelas minhas observações como desenvolvedor Java trabalhando em estações de trabalho Windows, o NTFS é lento em comparação aos sistemas de arquivos Linux. A pergunta é: há algo no driver NTFS que pode ser ajustado manualmente, por exemplo, fornecer mais memória para cache? Habilitar alguns algoritmos experimentais? Se isso não estiver disponível, existe outro sistema de arquivos que possa ser usado no Windows, talvez até comercial, que seja mais rápido que o NTFS?
Para ser claro, não pretendo melhorar a velocidade de compilação para projetos Maven, gostaria de obter uma melhoria geral para o sistema operacional. Tenho a sensação de que o NTFS está desatualizado e lento em comparação com os sistemas de arquivos Linux. Parece-me estranho que o sistema operacional mais popular do planeta tenha apenas um sistema de arquivos que ainda requer desfragmentação manual. Talvez hajaéuma alternativa?
Atualizar:Aqui está o que é lento de acordo com minhas observações. Estou construindo/empacotando um projeto, o que significa muitas operações de leitura/gravação em disco. O sistema de compilação é multiplataforma (Java, Maven), então posso realizar exatamente as mesmas ações ao inicializar no Ubuntu, por exemplo.
No Linux, minhas compilações são pelo menos 1/3 mais rápidas. Daí a questão sobre o sistema de arquivos. Sinto muito se estiver fora do lugar.
Responder1
Embora eu adorasse ver algo como o ZFS disponível para hosts Windows, o NTFS não é um sistema de arquivos horrível. Ele suporta a maioria dos recursos "modernos" do sistema de arquivos (atributos estendidos, registro em diário, ACLs, etc.), mas é prejudicado pelo Explorer e pela maioria dos outros aplicativos que não suportam nenhum deles.
Uma coisa que prejudicará totalmente seu desempenho é ter "muitas" entradas em um diretório. Depois de passar alguns milhares de entradas em um diretório, tudo fica lento. Literalmente, toda a máquina irá parar de esperar que o NTFS crie ou remova entradas quando isso estiver acontecendo.
Eu costumava trabalhar com um aplicativo que gerava documentos baseados em HTML para montagens .NET; ele criaria um arquivo por propriedade, método, classe, namespace, etc. Para assemblies maiores, veríamos mais de 20 k arquivos, todos bem despejados em um único diretório. A máquina passaria algumas horas durante a construção bloqueada em NTFS.
Em teoria, o Windows suporta plug-ins de sistema de arquivos, o que tornaria possível o ZFS nativo, o ext3 ou qualquer outro (até mesmo o FUSE). Na prática, as APIs não estão documentadas, então você está completamente sozinho.
Agora, como você está desenvolvendo Java, você poderia instalar um sistema operacional diferente em sua máquina ou usar uma VM em cima do Windows?
Além disso, você pode tentar alguns benchmarks de sistema de arquivos independentes de plataforma (iozone, bonnie... provavelmente existem outros mais modernos que não conheço de cara, talvez até alguns escritos em Java) para ver se é na verdade, o sistema de arquivos está impedindo você, ou se for outra coisa. Otimização prematura e tudo mais...
Responder2
- Desative o horário do último acesso
- Desative nomes de arquivos curtos
- Desative a notificação de exclusão
- Desative a indexação
- Desativar registro no diário
- Desative a cópia de sombra e versões anteriores, cotas e compartilhamentos.
- Ativar verificação transversal de bypass
Eu acho que a solução real seria reescrever seu sistema de compilação para que ele usasse a API nativa do sistema de arquivos do Windows, em vez da própria API unix (fopen etc) sob a estrutura de portabilidade. Mas isso não vai acontecer, então basicamente você fica preso a qualquer nível de desempenho que eles considerem aceitável.
Freqüentemente, ao usar sistemas não escritos originalmente para Windows, você descobre que a passagem de diretório foi tratada de maneira muito inadequada, portanto, certifique-se de ter uma árvore de diretórios bem plana.
Responder3
Existe um sistema de arquivos compatível com o novo sistema operacional Windows E é mais rápido que o NTFS. É exFAT. Existe a possibilidade de usá-lo para a unidade do sistema. Mas não se sabe quais complicações isso pode ter.
Você certamente pode usá-lo para outras partições. É mais rápido com operações aleatórias de leitura/gravação. Perfeito para um SSD, por exemplo.
Responder4
Nota histórica: HouveWinFS, que adicionou uma camada mais estruturada sobre o NTFS para permitir que o Windows trabalhe o conteúdo dos arquivos com mais eficiência.
O "verdadeiro" sucessor do NTFS éReFS. Seu foco é a resiliência. Ele está disponível apenas no Windows 10 Enterprise e no Windows Pro for Workstations. Uma boa leitura éNTFS x ReFS – Como decidir qual usar.