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

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?

É 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.)

Valeu, obrigado.

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

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.

Como se utiliza esses profilers?