Visual Studio lento? Veja como deixar ele muito mais rápido!

Dependendo do tamanho da sua solution o Visual Studio pode ser um tanto lento. Já passei por diversas dificuldades durante minha carreira de desenvolvimento, principalmente quando eu usava o Visual Studio 2010 em uma máquina com HD “normal” (com disco, físico). Atualmente usando SSD e Visual Studio 2017 o dia a dia está bem melhor. Porém, ainda há espaço para melhoramento! Esqueça o velho Visual Studio Lento e dê olá ao Visual Studio Rápido 😀

Eu sou um tanto fanático por velocidade, seja no ciclismo, ou no Smartphone, ou no meu computador. Eu gosto que tudo seja muito rápido! Logo, eu sempre busco formas de tornar os processos mais ágeis, sem travamentos e enrolações.

No que diz respeito ao Visual Studio, o grande limitador é sempre o seu HD. Não é memória, não é processador (desde que você tenham o mínimo necessário). O gargalo sempre será o seu HD.

Se você utilizar o aplicativo Procmon (baixe aqui) para monitorar o que está sendo acessado (leitura e escrita) no seu HD durante o carregamento do projeto ou compilação, você vai ficar assustado com a quantidade de acessos que o Visual Studio faz ao disco. Sério!

A grande solução

Pra remover esse limitador e transformar o Visual Studio lento em um Visual Studio rápido eu fiz o seguinte: Joguei todos os arquivos da solution e arquivos temporários e de cache para a memória!

Caso você não saiba, existe um software chamado SoftPerfect RAM Disk que faz a criação de discos em memória. Assim, ele fica como se fosse um HD normal, só que ao invés de usar o armazenamento comum, ele armazena na memória RAM. E não há nada mais rápido no seu computador para armazenamento do que a memória RAM.

Eu combinei o SoftPerfect RAM Disk com o comando MKLINK do DOS pra gerar links simbólicos das pastas que o Visual Studio acessa corriqueiramente. Assim, todos os arquivos que são usados de forma intensa estão na memória, onde a leitura e escrita são muito mais rápidas.

Calculando o Espaço Necessário

O primeiro passo é calcular o tamanho do disco que você precisará criar. Para isto, verifique o tamanho da sua solution e adicione mais 350MB ao cálculo para guardar os demais arquivos que vou demonstrar nesse tutorial.

No meu caso, a solution possui cerca de 1GB de tamanho (calcule com ela compilada, incluindo pastas /bin/ etc). Então, 1GB + 350MB. Eu criei um disco de 2GB pra garantir que terei espaço disponível para o crescimento dos arquivos.

Criando o Disco Virtual

Para criar o disco virtual, abra o RAM Disk, vá no menu Imagem e então Criar Imagem. Agora, informe a localização da Imagem e o tamanho (em MB), veja:

Criar Imagem do Disco Virtual (RAM Disk)
Criar Imagem do Disco Virtual (RAM Disk)

Agora que a Imagem está criada, vamos anexar ela ao RAM Disk. Para isto, basta clicar no botão “+” (em vende) que está na tela principal. Nesta tela, selecione a imagem que você criou, escolha letra da unidade, marque a opção “Salvar conteúdo para imagem”  e confirme. Veja:

Anexando Disco Virtual no RAM Disk
Anexando Disco Virtual no RAM Disk

Agora, basta ir até “Meu Computador” formatar o novo disco utilizando o sistema de arquivos NTFS. Pronto, seu disco virtual está disponível para uso.

Se você quer ter certeza de que este disco é realmente mais rápido, você pode baixar o aplicativo Cyrstal Disk Mark e comparar o desempenho do seu HD normal com o desempenho do seu novo HD virtual.

Levando a Solution para o Disco Virtual

O primeiro passo é levar a solution pro seu novo disco virtual. Este procedimento você poderá fazer através do Source Control do seu Visual Studio. Se você não conseguir fazer pelo Source Control (dependendo do tipo de mapeamento que você fez, você não conseguirá), você pode fazer usando o MKLINK através do DOS, veja como fazer abaixo.

Neste exemplo, vou mover uma solution chamada Sistema de Atualização para o disco virtual, ela está localizada em “C:\MOVERE\TFS\Independentes\Sistema de Atualização\“. Neste caso, eu movo completamente a pasta “Sistema de Atualização” para o disco virtual. No meu caso, a nova localização física da pasta será “M:\Independentes\Sistema de Atualização\“.

Após mover a pasta que armazena a sua solution completa, é hora de criar o link simbólico para que o Visual Studio não perceba que você moveu a pasta, veja como fazer abaixo.

Abra o MS DOS (como administrador) e navegue até a pasta onde estava armazenada a pasta que você moveu. No meu exemplo, vou utilizar o comando “cd C:\MOVERE\TFS\Independentes\”, veja:

Navegue até a pasta que armazena a pasta que você moveu
Navegue até a pasta que armazena a pasta que você moveu

Agora, vamos criar o link simbólico usando o seguinte comando:

mklink “Sistema de Atualização” “m:\Independentes\Sistema de Atualização\” /d

Veja na imagem abaixo com mais detalhes:

Link Simbólico Criado usando MKLink
Link Simbólico Criado usando MKLink

Em vermelho você vê a Origem e em laranja você vê o Destino. Agora, se eu acesso a pasta na Origem, o Windows “simula” a pasta como se ela ainda estivesse no disco “c:\”, porém, agora ela está armazenada fisicamente no “m:\”. Assim, seu Visual Studio não perceberá que a localização física da pasta mudou e você poderá usar ele normalmente, veja:

Link Simbólico em funcionamento
Link Simbólico em funcionamento

Agora abra o Visual Studio e valide se tudo está funcionando corretamente. Somente com esse procedimento o desempenho do seu Visual Studio no que diz respeito à sua solution (abrir, carregar, compilar, checkout, etc) será muito maior.

Cache e SDK do Visual Studio

Durante as minhas análises de consumo de acessos ao disco por parte do Visual Studio, eu pude reparar que há grandes quantidades de acessos às seguintes pastas:

  • C:\Program Files (x86)\Microsoft SDKs\TypeScript;
  • C:\Users\Jonatan\AppData\Local\Microsoft\ApplicationInsights;
  • C:\Users\Jonatan\AppData\Local\Microsoft\TypeScript;
  • C:\Users\Jonatan\AppData\Local\Microsoft\VSApplicationInsights;
  • C:\Users\Jonatan\AppData\Roaming\npm-cache;

Então, após esta análise, movi todas estas pastas para uma pasta chamada “cache” no meu disco virtual, que ficou assim:

Pastas do Cache e SDK do Visual Studio
Pastas do Cache e SDK do Visual Studio

Para cada pasta movida, eu executei o MKLINK pra criar o link simbólico para que tudo continue funcionando direitinho. Exemplo:

mklink ApplicationInsights m:\cache\ApplicationInsights /d

Depois que você pega o jeito da coisa, você poderá fazer isso com diversas pastas para que a velocidade leitura e escrita de arquivos seja realmente muito maior.

Conclusão e Adendos

Se você optar por utilizar esta técnica pra melhorar o desempenho do seu Visual Studio, lembre de não deixar nada pendente de checkin ao desligar a sua máquina. Apesar desse disco virtual ser confiável ele não é infalível. Uma recomendação boa é fazer backup das pastas que você irá mover para o disco virtual, para que, se der pane, você possa restaurar rapidamente e continuar trabalhando.

Se precisar de ajuda é só deixar nos comentários que eu respondo o mais rápido possível.

Espero ter ajudado!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.