martes, 2 de diciembre de 2008

Cronometrar un proceso en Java

Se utiliza la clase Calendar por lo que hay que añadir al principio del código:
import java.util.Calendar

Cuando se quiere empezar a contar el tiempo se introduce algo como esto:
Calendar ahora1 = Calendar.getInstance();
long tiempo1 = ahora1.getTimeInMillis();
Es decir, se crea una instancia (getInstance) de la clase Calendar que se ha llamado ahora1 en este ejemplo, y una variable de tipo long que se ha llamado tiempo1 que guarda la hora actual (getTimeInMillis) en milisegundos.

A continuación se meterá el código de lo que se quiera cronometrar.

Después de eso será el momento de obtener de nuevo la hora en milisegundos para calcular la diferencia posteriormente:
Calendar ahora2 = Calendar.getInstance();
long tiempo2 = ahora2.getTimeInMillis();

El tiempo tardado será la diferencia de la hora tomada al final (tiempo2) y la tomada al principio (tiempo1), que se guardará en una variable de tipo long llamada, por ejemplo, diferencia:
diferencia = tiempo2 - tiempo1;
Esta variable contendrá el tiempo de diferencia en milisegundos, por lo que si se muestra tal cual en pantalla aparecerá el número de milisegundos.

Para mostrar el tiempo en otro formato como horas:minutos:segundos habrá que hacer las operaciones matemáticas correspondientes.

Ejemplo:
/** Programa que calcula el tiempo que tarda el usuario
en pulsar Intro desde que se inicia el programa */


//Se debe importar java.util.Scanner y java.util.Calendar
// por lo que se puede usar también java.util.*
import java.util.*;

public class tiempo
{
public static void main(String args[])
{
long t1, t2, dif;
String cad;
Scanner teclado = new Scanner(System.in);

//Se toma la hora en el inicio del programa
Calendar ahora1 = Calendar.getInstance();
t1 = ahora1.getTimeInMillis();

System.out.println("Empieza a contar el tiempo.");
System.out.print("Pulsa Intro para terminar.");

//Se espera a que el usuario pulse intro
cad = teclado.nextLine();

//Se vuelve a tomar la hora una vez que ha pulsado Intro
Calendar ahora2 = Calendar.getInstance();
t2 = ahora2.getTimeInMillis();

//Se calcula la diferencia de tiempo
dif = t2 - t1;

//Se muestra en pantalla la diferencia de tiempo obtenido
System.out.println("Has tardado: " + dif + " milisegundos");
System.out.printf("Equivale a: %.3f segundos", (double)dif/1000);
}
}

2 comentarios:

  1. Hola muchisimas gracias por la información, mas adelante voy hacer una equivalencia con la fecha de calendar, date util y Sql util.
    Te dejo un link en mi blog en el cual tambien trato este tema pero con el Date e imprimo con formato de horas.

    http://java-white-box.blogspot.com/2013/07/java-code-como-calcular-el-tiempo-que.html

    Saludos

    ResponderEliminar

 

Contador de visitas