Foros del Web » Programando para Internet » Javascript »

Medir tiempo que tarda en ejecutarse una funcion

Estas en el tema de Medir tiempo que tarda en ejecutarse una funcion en el foro de Javascript en Foros del Web. Tengo el siguiente problema, quiero hacer una funcion que se repita en un bucle infinito, y me gustaria medir el tiempo que tarda en dar ...
  #1 (permalink)  
Antiguo 10/10/2012, 09:23
 
Fecha de Ingreso: junio-2011
Mensajes: 89
Antigüedad: 13 años
Puntos: 7
Medir tiempo que tarda en ejecutarse una funcion

Tengo el siguiente problema, quiero hacer una funcion que se repita en un bucle infinito, y me gustaria medir el tiempo que tarda en dar cada vuelta el bucle, quiero que la salida se muestre en un div.

Al intentarlo resulta que si hago un bucle no actualiza el div, y probe a quitarlo y que solo se ejecutara una vez mi funcion para ver el tiempo que tarda en hacerlo, pero la diferencia entre que empieza y acaba es 0, y no creo que sea porque tarda menos de 1 milisegundo en resolverla. Uso el metodo getTime() del objeto Date.

¿Como puedo hacer que funcione mi experimento? Gracias de antemano :)
  #2 (permalink)  
Antiguo 10/10/2012, 15:07
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

Seria bueno ver el codigo, pero el tema es descomponer ese tiempo en milisegundos.
  #3 (permalink)  
Antiguo 12/10/2012, 04:41
 
Fecha de Ingreso: junio-2011
Mensajes: 89
Antigüedad: 13 años
Puntos: 7
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

Si es que el metodo getTime() te da la fecha actual en milisegundos
  #4 (permalink)  
Antiguo 12/10/2012, 07:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años
Puntos: 1567
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

Habría que ver tu ejemplo completo para ver por que querés medir el tiempo entre bucle y bucle, ni por que hacer la función infinita, puede que te cuelgue el navegador.
Más lógico me suena calcular el tiempo de ejecución de una función
De todas formas quizás esto te sirva u oriente

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. </head>
  7. <div id="ms"></div>
  8. <script type="text/javascript">
  9. //<![CDATA[
  10. function tiempo(){
  11. for (num=0;num<=10;num++) {
  12. var date1 = new Date();
  13. var milisegundos1 = date1.getTime();
  14. alert('obteniendo el tiempo entre alert y alert');
  15. var date2 = new Date();
  16. var milisegundos2 = date2.getTime();
  17. var diff_mseg = milisegundos2 - milisegundos1;
  18. document.getElementById('ms').innerHTML += 'bucle ' + num + ': ' + diff_mseg + ' milisegundos<br \/>';
  19. }
  20. }
  21. window.onload = tiempo;
  22. //]]>
  23.  
  24. </body>
  25. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 12/10/2012, 09:05
 
Fecha de Ingreso: junio-2011
Mensajes: 89
Antigüedad: 13 años
Puntos: 7
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

Gracias por tu ayuda, estuve jugueteando con ese codigo y me di cuenta porque se me colgaba el navegador, es que hasta que no termina el bucle no escribe nada en el div, entonces al hacer un bucle infinito jamas me dibujara nada en el div (no sabia ese detalle).

Pero es que lo que quiero conseguir es ejecutar una funcion todo el tiempo, es decir que cuando acabe se vuelva a ejecutar y asi sucesivamente. Quiero medir el tiempo que tarda en ejecutarse cada vez que lo hace y la idea es que se ejecute tan rapido como pueda y tantas veces por segundo como pueda, por si no me explico te pongo un pseudo-codigo:

bucle infinito (uso while(1)):
obtener tiempo1
mi_funcion()
obtener tiempo2

escribir en un div: tiempo2 - tiempo1
fin bucle

Y por cierto, me he fijado que en tu codigo declaras dos objetos Date(), ¿Esto es necesario? ¿Por que?
  #6 (permalink)  
Antiguo 12/10/2012, 09:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años
Puntos: 1567
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

No sé exactamente el objeto, algo asi
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. </head>
  7. <div id="ms"></div>
  8. <script type="text/javascript">
  9. //<![CDATA[
  10. function tiempo(){
  11. var i = 1;
  12.  
  13. while (i < 10) {
  14. var date1 = new Date();
  15. var milisegundos1 = date1.getTime();
  16. //  alert('x'); --> aqui tu función
  17. var date2 = new Date();
  18. var milisegundos2 = date2.getTime();
  19. var diff_mseg = milisegundos2 - milisegundos1;
  20. document.getElementById('ms').innerHTML += 'bucle ' + i + ': ' + diff_mseg + ' milisegundos<br \/>';
  21. i++
  22. }
  23. }
  24. setInterval('tiempo()',1000);
  25. //]]>
  26.  
  27. </body>
  28. </html>
la función se repite constantemente cada 1 segundo, pero el bucle NO es infinito.
bajale el valor del setTimeout para reducir el tiempo.
el alert debe ser reemplazado por tu función

con Date() volvemos a tomar los milisegundos para calcular la diferencia


SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 13/10/2012, 17:48
 
Fecha de Ingreso: junio-2011
Mensajes: 89
Antigüedad: 13 años
Puntos: 7
Respuesta: Medir tiempo que tarda en ejecutarse una funcion

Perdona por no explicarme bien, pero es que la funcion setInterval() era contraria a mi objetivo, que era ejecutar una funcion tantas veces por segundo como mi ordenador pudiera, no ejecutarla un numero constante de veces por segundo. Asi podria medir el tiempo medio que necesita para ejecutar algunas funciones (digo algunas porque como es un experimento lo comprobaria con varias).

Lo he logrado con la funcion webkitRequestAnimateFrame, asi que muchas gracias por tu ayuda me a servido bastante. Saludos

Etiquetas: funcion, medir, tarda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:48.