Análise de Desempenho Usando Profilers

10:24 am Desenvolvimento

Desde minhas primeiras incursões em Java (em 1996, quando a linguagem ainda estava em beta) eu me vi às voltas com código exigente em termos de memória e capacidade de processamento (principalmente quando lidando com aprendizado de máquina e métodos evolucionários).

A “otimização prematura é a raiz de todo mal”, mas otimização tardia também pode ser difícil e trabalhosa. Identificar os gargalos do seu sistema (performance bottlenecks) é fundamental para melhorar o desempenho do software. Por causa disso, mais cedo ou mais tarde é preciso realizar alguma forma de profiling – identificar quanto tempo seu sistema gasta em cada tarefa, e quanta memória é alocada por quais objetos.

Existem várias técnicas para isso, e acho que já usei quase todas, do mundano println(System.getCurrentTime()…) a Java Virtual Machine Profiling Interface. Nenhuma delas superou um bom programa dedicado especificamente a essa tarefa. Há alguns anos, meu preferido era o JProbe; recentemente, esse título vai para o excelente Yourkit Profiler.

Detalhe da tela do YourKit Java Profiler

Disponível para Java e C#, o Yourkit Profiler integra-se facilmente a IDEs como o Eclipse, e realiza praticamente todas as análises que procuro, com baixíssimo overhead e uma interface gráfica completa e agradável. Não entrarei em detalhes sobre todos os recursos disponíveis; o site é bem completo em relação a isso, e oferece uma versão de avaliação válida por 15 dias.

O preço do Yourkit Java Profiler é bastante razoável, e licenças gratuitas para projetos open-source ativos estão disponíveis (obtivemos licenças para o uso no HyperGraphDB e RelEx, dois projetos de software livre em que participo ativamente do desenvolvimento).

A cereja em cima do bolo é a equipe da YourKit: eu fiz um breve comentário sobre o suporte a profiling de métodos nativos e me surpreendi quando os desenvolvedores me procuraram pedindo por informações do que eu precisava, e poucos dias depois disseram que vão incluir esses recursos no programa.

Se seu programa em Java ou C# está lento ou consumindo memória demais, experimente levar o YourKit Profiler para passear! :-)

DISCLAIMER: Esse post foi resultado exclusivamente de experiências pessoais, e foi escrito de forma espontânea; exceto pelas licenças gratuitas fornecidas para os projetos open-source, comentadas acima, não há qualquer associação entre mim ou o Vetta Labs e a YourKit, LLC.