Microsegundos

Boa noite pessoal!

Preciso mensurar o tempo que um determinado código Java leva para executar, isso seria simples se fosse com precisão de milisegundos, porém, preciso de uma precisão de microsegundos (sim, precisa ser em micro, rs).

Pesquisei muito, mas não achei nenhuma informação concreta. Achei em alguns fóruns gringos um pessoal dizendo que isso não é possível no Java, pois a precisão dele seria de milisegundos, porém não achei nenhuma fonte oficial informando isso.

Saberiam me ajudar, nem que seja com uma fonte oficial dizendo que não existe essa precisão no Java?

Muito obrigado,

Rodrigo

ja deu uma olhada aqui?
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html#MICROSECONDS

System.nanoTime()

Bom dia!

Eu havia dado uma olhada no TimeUnit, porém não consegui fazer ele funcionar como eu precisava (pode ter sido falta de conhecimento da minha parte).

Já o System.nanoTime(), eu consegui chegar a uma receita (não é de minha autoria, peguei na internet e acredito que esteja correto):

[code]
long timeInMillis = System.currentTimeMillis();
long timeInNanos = System.nanoTime();

	Timestamp timestamp = new Timestamp(timeInMillis);
	timestamp.setNanos((int) (timeInNanos % 1000000000));[/code]

Só que ai ele me retorna com 9 casas após o segundo, mas acho que a solução será eu arredondar.

Acredito que esteja correto, se alguém questionar diz ai, por favor!

Muito obrigado!

micro = 10^-6
nano = 10^-9

Se tem o valor em nano, para passar para micro, basta dividir por 1000 (10^3).

Então pessoal, na verdade a solução que eu havia encontrado não foi das melhores, pois nem sempre os valores ficam coerentes.

Estou usando ela para medir o tempo de início e final de um processo, porém as vezes o tempo inicial fica maior que o final:

Início: 2013-11-04 16:37:03.997355
Fim: 2013-11-04 16:37:03.125827

Alguém tem ideia do que pode ser?

Muito obrigado!