Cuando estamos haciendo pruebas de rendimiento de nuestros programas, una forma muy sencilla de medir el tiempo de ejecución en Java es invocando a la función System.currentTimeMillis() entre dos puntos de nuestro programa. Esta función te da los milisegundos transcurridos desde el 1 de enero de 1970. Esta fecha es tomada como estándar en el mundo de la computación y es denominada «the epoc».
Posteriormente lo que haremos será restar el tiempo obtenido en los dos puntos y como resultado nos dará el tiempo de ejecución entre estos dos puntos en milisegundos.
Puede ser que como dato técnico esté bien el ver los tiempos en milisegundos, pero en otras necesitaremos ver el dato en un formato de hora, minutos y segundos. Para estos casos no podemos utilizar la función SimpleDataFormat, ya que esta te formatea el dato de los milisegundos desde el 1 de enero de 1970. Es por ello que no nos vale.
Para resolverlo vamos a hacerlo de una forma más «manual», pero muy sencilla.
La idea es la siguiente. Lo primero es dividir los milisegundos entre 3600000. Este valor representa el número de milisegundos de una hora. A si que partiendo la cantidad de milisegundos que tenemos entre este valor tendremos las horas.
hora = milisegundos/3600000;
Ahora hay que ver cuando milisegundos quedan como resto de la división. El resto lo obtenemos mediante el operador %.
restohora = milisegundos%3600000;
Ahora, de los milisegundos restantes hay que ver cuantos son minutos. Es por ello que dividimos entre 60000. Que son los milisegundos equivalentes a un minuto. El código será como el anterior, primero los minutos y luego el resto.
minuto = restohora/60000;
restominuto = restohora%60000;
Con el resto de los minutos aplicaremos la misma técnica para calcular los segundos. En este caso el divisor será 1000. Ya que un segundo son 1000 milisegundos.
Solo nos quedará el volcar por pantalla nuestro resultado.
System.out.println(hora + ":" + minuto + ":" + segundo + "." + restosegundo);