Foro de elhacker.net

Programación => Java => Mensaje iniciado por: pedraxito en 21 Febrero 2008, 07:13 am



Título: timer en java
Publicado por: pedraxito en 21 Febrero 2008, 07:13 am
Hola que tal??
tengo una duda ... y les pido de favor si me pueden orientar

basicamente necesito crear un timer, o lo que sea necesario jeje, para saber cuanto tiempo dura un bucle (un for)

como lo puedo hacer??


Título: Re: timer en java
Publicado por: Lu15_CL4 en 23 Febrero 2008, 06:38 am
pones:

            long tini=0; //tiempo inicial
            double ttot=0; // tiempo total
            tini=System.nanoTime();

//aqui pones a lo que le vas  a medir el tiempo           

            ttot=Double.valueOf(System.nanoTime()-tini)*0.000000001;
            System.out.print(ttot+" segundos.");
           
te lo puse en segundos, esque te da el timepo en nanos.
^^ espero que te sirva :)


Título: Re: timer en java
Publicado por: INFORMATICO95 en 18 Abril 2008, 05:33 am
Lu15_CL4

Saludo

quisiera saber de cual libreria o packete es System.nanoTime() porque me da error. requiero calcular el tiempo transcurrido entre dos proceso en cuanto a hora minutos y segundos y por lo pronto quiero ver como funciona el codigo que suministraste. Porque me da error el metodo System.nanoTime()


Informatico95


Título: Re: timer en java
Publicado por: Lu15_CL4 en 18 Abril 2008, 06:39 am
es del 'java.lang.*' mas especifico 'java.lang.System.nanoTime()', solo aparece a partir del jdk 1.5, debe ser eso, al mejor tienes una version mas vieja.

la funcion esa solo te regresa el tiempo actual en nano segundos, pa sacar el tiempo en que dura algo sacas el tiempo al iniciar y al finalizar luego nomas los restas

PD: esto no es un timer... los timer son como relojes que haces que ejecuten codigo cada cierto tiempo(se pueden usar para hacer ciclos muuuuuy largos sin que se tragen todos los recursos)


Título: Re: timer en java
Publicado por: INFORMATICO95 en 18 Abril 2008, 12:38 pm
Lu15_CL4

Ah Ok tengo la version 1.4 por eso da error. Emplee la funcion  System.currentTimeMillis() que da el tiempo en milisegundo empleando tu consejo se toma el tiempo al inicio del proceso y al final.

Ahora como hago para transformar eso en hora minutos y segundos?

Hice lo siguiente para el calculo de horas, minutos y segundos pero cunado tomo el tiempo me da incongruencia como 0 hora 1 minuto 102 segundos. Cuando todos sabemos que los segundos son hasta 60.

Cual es la logica para ese calculo?

Informatico95


Título: Re: timer en java
Publicado por: INFORMATICO95 en 18 Abril 2008, 12:41 pm
--------------------------------------------------------------------------------


Perdon equivoque, obvie los calculos que estaba haciendo

Ah Ok tengo la version 1.4 por eso da error. Emplee la funcion  System.currentTimeMillis() que da el tiempo en milisegundo empleando tu consejo se toma el tiempo al inicio del proceso y al final.

Ahora como hago para transformar eso en hora minutos y segundos?

Hice lo siguiente para el calculo de horas, minutos y segundos

segundot=(int)(millisDiff/1000);
minutot=(int)(millisDiff/(1000*60));
horat=(int)(millisDiff/(1000*60*60));
      

pero cuando tomo el tiempo me da incongruencia como 0 hora 1 minuto 102 segundos. Cuando todos sabemos que los segundos son hasta 60.

Cual es la logica para ese calculo?

Informatico95


Título: Re: timer en java
Publicado por: sapito169 en 19 Abril 2008, 19:31 pm
 ;D ;D ;D ;D ;D
esa logica esta mal es mas no nesesitas pasrlo a minutos oras y segundos por que sienpre seria 00  horas 00minutis 0.00000x segundos nuca se demorarar mas de un minuto a menos que ayas echo un programa gigantes que ayan 20 for anidados y los busque en varias vases de datos entiendes lo que digo :P

la logica es la siguiente
ayas primero las oras con desimales 5,5 horas luego a los deciamles de las horas lo pasas a minutos  que sea asi 0,5horas =30minutos
aorita te lo ago um metodo que te lo resuelve


Título: Re: timer en java
Publicado por: Lu15_CL4 en 20 Abril 2008, 09:16 am
Hice lo siguiente para el calculo de horas, minutos y segundos

segundot=(int)(millisDiff/1000);
minutot=(int)(millisDiff/(1000*60));
horat=(int)(millisDiff/(1000*60*60));
      

pero cuando tomo el tiempo me da incongruencia como 0 hora 1 minuto 102 segundos. Cuando todos sabemos que los segundos son hasta 60.

Cual es la logica para ese calculo?

Informatico95

lo que pasa es que estas usando el mismo valor para todo(milisDiff) solo lo estas pasando a horas, minutos y segundos, osea: 0 hora = 1 minuto = 102 segundos..., solo que les kitas los decimales al pasarlos a entero, me da weba pensar... ya tienes el error buscale da ahi ^^

:)