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
mvsouza
Valeu, obrigado.
R
rflprp
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.