Visual Studio Diagnostic Tools + GitHub Copilot

Frederico Ribeiro
#LocalizaLabs
Published in
4 min readDec 15, 2023

Vez ou outra, ou quase sempre, precisamos entender o desempenho de nossas aplicações. Medir o consumo de CPU e/ou de memória de um determinado método ou processo.

Os resultados desses diagnósticos nos mostram, na grande maioria dos cenários, onde devemos atuar. No entanto, podemos não ter as respostas exatas para mitigar o problema e por esse motivo precisamos realizar diversas tentativas até chegar ao resultado satisfatório.

Porém, com o advento das IAs colaborativas, devemos fazer, de bom uso, esses ricos recursos.

A seguir, irei demonstrar um problema conhecido dos desenvolvedores .NET onde usaremos concatenação de strings. Já é sabido que a cada concatenação, um novo espaço (variável) de memória é criado, acarretando o alto consumo de memória.

Abaixo, temos o código onde iteramos 10.000 vezes e, a cada iteração, concatenamos um valor à variável do tipo string.

using System.Runtime.CompilerServices;

Console.WriteLine("PROCESSAMENTO INICIADO");

Increment();

Console.WriteLine("PROCESSAMENTO FINALIZADO");

Console.ReadKey();

static void Increment()
{
var value = "";
for (int i = 0; i <= 10000; i++)
{
value += $"iteration {i} \n";
}

Console.WriteLine(value);
}

Para recuperar as informações de diagnóstico, devemos rodar o trecho de código habilitando o debug, conforme imagem abaixo:

É importante certificar, antes de prosseguir com o debug, de que a gravação do perfil da CPU (botão Record CPU Profile, na aba Diagnostic Tools) esteja ligada:

Com a ferramenta de diagnóstico “pronta”, basta liberar o break point e coletar os resultados da análise:

Ao abrir os detalhes (Open details), podemos ver o ponto do código ofensor:

Como podemos ver, o método Increment() é o grande ofensor da CPU. Sem o uso da GitHub Copilot, precisaríamos analisar e realizar diversas tentativas de melhoria, repetindo a análise de diagnóstico até encontrar uma solução satisfatória.

Mas, e aí? Como podemos tirar proveito do GitHub Copilot?

Vale ressaltar que, para utilizar o GitHub Copilot, é necessário possuir licença. Talvez, esse artigo sirva de incentivo para se pensar nessa possibilidade. Seja de forma individual ou corporativa.

Bom. Já sabemos que o método Increment() é o ofensor. Dessa forma, usando o Ask Copilot, podemos perguntar ao mesmo como melhorar o desempenho do método. Veja como é simples:

Selecione o método, clique com o botão direito e selecione Ask Copilot.

Na caixa de diálogo, digite o máximo de detalhes necessários para que a IA devolva respostas viáveis.

E sim, a IA devolveu o que realmente esperávamos: uso da concatenação via StringBuilder.

Além de explicar o motivo da ineficiência do código, o GitHub Copilot nos sugere o código corrigido:

Legal, né?!

Enfim. A cada dia surgem novas ferramentas. Devemos nos preparar para usá-las em prol de nossa produtividade e aprendizado. Muito se fala que as IAs irão nos substituir. No entanto, devemos encará-las como oportunidades. Oportunidades para melhorar processos, para nos trazer mais conhecimento e mais produtividade. Devemos usá-las com sabedoria e a nosso favor!

Espero que tenha gostado!

Até o próximo!

Referência(s)

https://learn.microsoft.com/pt-br/visualstudio/debugger/debug-with-copilot?view=vs-2022

--

--