Como ver quais partes do seu código são executadas com mais frequência?

11

Eu gostaria de ser capaz de ver o código em milhares de linhas de código-fonte é executado na maioria das vezes e leva mais tempo. O objetivo disso seria a otimização.

Ser capaz de ver quais partes do código são executadas com mais frequência é importante para a otimização, porque essas partes são onde eu devo me concentrar para acelerar. Ao mesmo tempo, é claro, algum código é executado com muita frequência, mas praticamente não leva tempo; portanto, também é importante poder ver qual código leva mais tempo.

Eu acho que o melhor dos dois mundos seria um programa que adiciona a quantidade de tempo que um código leva, incluindo TODAS as vezes em que foi executado (para descobrir o que torna o código mais lento). Existe algum tipo de ferramenta para isso?

sinθ
fonte
Você tem uma preferência para o sistema operacional ou linguagem de programação?
MAWG diz Reintegrar Monica

Respostas:

15

O que você está procurando é profiling :

Na engenharia de software, a criação de perfil ("criação de perfil de programa", "criação de perfil de software") é uma forma de análise dinâmica de programa que mede, por exemplo, a complexidade do espaço (memória) ou de tempo de um programa, o uso de instruções específicas ou a frequência e duração das chamadas de função. O uso mais comum das informações de criação de perfil é ajudar na otimização do programa.

Existem várias aplicações desse tipo. Às vezes, eles são criados no próprio IDE. O ide netbeans é uma dessas ferramentas que possui um criador de perfil . insira a descrição da imagem aqui

Outra ferramenta é o visual vm .

insira a descrição da imagem aqui

Os criadores de perfil podem trabalhar de maneiras diferentes - e é preciso estar ciente das diferenças. Uma abordagem é a cada segundo para obter uma captura instantânea dos threads em execução e ver quais métodos estão sendo chamados atualmente para cada thread. Isso usa uma amostra do que está lá fora.

A outra abordagem é instrumentar o bytecode java para relatar o início e o tempo de parada para outro aplicativo.

Escrever um criador de perfil não é muito difícil para um java habilidoso. A IBM possui um artigo sobre como escrever seu próprio criador de perfil (com código fonte!). Este é baseado no Java Interactive Profiler .

Há uma infinidade de criadores de perfil por aí - gratuitos e comerciais (que tal um criador de perfil conectado a instâncias da JVM em execução que podem relatar para você (email ou alguma outra notificação) quando métodos específicos excederem o tempo de execução esperado? programa que relata quando as solicitações da Web demoram muito tempo - o perfil histórico dessa solicitação é salvo para inspeção posterior?). Você só precisa saber o que está procurando para começar a encontrá-los e partir daí.

Depois de obter o criador de perfil, você começa a interpretar os resultados da criação de perfil .

Comunidade
fonte