Verifcar qnt tempo dura a execução de um método

5 respostas
M

Olá a todos.
Gostária de saber se existe alguma outra maneira de verificar quanto tempo dura a execução de um determinado método.

atualmente estou realizano deste modo

long inicio = System.currentTimeMillis();
metodo();
long fim  = System.currentTimeMillis();
System.out.println( fim - inicio );

existe outra maneira?

5 Respostas

T

É isso mesmo.

Se você estiver usando o Java 5.0, existe o método System.nanoTime(), que lhe retorna um tempo com a precisão (não a exatidão!) de nanossegundos (bilionésimos de segundo). Mas para tempos grandes (como alguns segundos), usar System.currentTimeMillis() é suficiente.

Mas pelo que eu sei, normalmente o correto é repetir a invocação do método algumas centenas ou até milhares de vezes, e desprezar os valores muito grandes ou muito pequenos para o tempo, para calcular o valor médio.
(Um valor muito grande pode ser porque o compilador está trabalhando sobre o seu método e efetuando a compilação “just-in-time”, ou porque o código ainda não foi compilado e está funcionando em modo interpretado.)

M

Valeu, obrigado.

R

Nesse tipo de caso, aspectos são muito úteis.

ViniGodoy

Se sua idéia é medir performance, outra idéia é usar um profiler. Ele é uma ferramenta automática que mede a performance de todos os métodos e te diz qual foi o que mais impactou a execução da aplicação.

O bom é que ele consegue acumular resultados de métodos que rodam várias vezes e muitas vezes mostra que, um método aparentemente rápido que roda centenas de vezes tem mais impacto que aparentemente lento que roda esporadicamente.

Tanto o Netbeans quanto o Eclipse tem bons profilers.

Ao invés de aspectos, você também pode usar os proxys dinâmicos, suportados pelo próprio SDK.

tucamefe

Como se utiliza esses profilers?

Criado 17 de abril de 2007
Ultima resposta 17 de abr. de 2007
Respostas 5
Participantes 5