Por que o Vim pode abrir arquivos grandes mais rapidamente do que outros editores de texto?

10

Ao abrir arquivos de log grandes (bem, não tão grandes, mas 80mb ainda são muito texto!), Eu sempre usei o Vim, pois os carrega quase instantaneamente. Outros editores de texto, como o Bloco de notas, o Notepad ++, etc, levam mais de 10 segundos para processar e carregar o arquivo. Qual é a razão para isto? O que torna o Vim tão rápido?

Anônimo
fonte
8
Ligue destaque de sintaxe e ser surpreendido como vim lento pode tornar
Marco
11
Para os eleitores próximos: eu argumentaria que essa pergunta é construtiva - como a resposta indica, existem técnicas que o Vim usa que a tornam mais eficiente com arquivos maiores do que alguns outros editores. Essa é uma resposta concreta, que pode ser apoiada por fatos / referências. E não sei por que as pessoas podem considerar isso localizado; há uma clara diferença na maneira como os editores lidam com arquivos que afetam muito mais do que uma pequena área geográfica, um momento específico no tempo ou uma situação extraordinariamente estreita .
24412 Bob
1
@ Bob - Não vejo como a resposta a esta pergunta resolve quaisquer problemas.
Nifle

Respostas:

16

Existem vários truques que os editores podem usar para otimizar o tratamento de arquivos grandes.

Uma é trabalhar apenas com o que eles precisam. Isso significa não tentar analisar o arquivo inteiro em busca de coisas como contagem de linhas, medidas de largura, quebra de linha, destaque de sintaxe, validação XML, renderização HTML, Desfazer etc. Há o plug-in LargeFile disponível para o Vim que desativará vários recursos do Vim quando um arquivo "grande" (conforme definido pelo usuário) é aberto. A página Carregamento mais rápido de arquivos grandes no wiki do Vim menciona alguns dos recursos desativados: ignorar tipo de arquivo (para destaque / análise de sintaxe), desativar desfazer, alternar para o modo somente leitura. Há outras mudanças também, mas elas parecem ter como objetivo a conservação da memória além da velocidade.

Outro é o mapeamento de memória. Em vez de ler o arquivo inteiro na memória, diga ao sistema operacional subjacente para mapear uma visualização do arquivo diretamente no espaço de memória do processo. Não tenho certeza se o Vim em particular faz isso, mas outros editores podem e fazem.

Esses são provavelmente os 2 maiores, mas certamente há mais.

afrazier
fonte
Você tem uma referência para o vim usando alguma dessas técnicas?
slhck
Não posso comentar sobre o mapeamento de memória em particular, mas o primeiro definitivamente pode ser feito. Edite em breve.
afrazier