PDA

Ver la Versión Completa : [ IDEA ] Tarea para cronometrar procesos


WillyWeb
29/02/16, 09:34:50
En esta tarea (http://www.htcmania.com/showthread.php?t=1144601) para eliminar archivos duplicados incluí un contador para cronometrar cuánto tardaba la tarea en completar su trabajo.

La cosa es realmente sencilla...

En el momento que te interese comenzar a cronometrar guardas en una variable local el valor de %TIMEMS (hora del sistema en milisegundos). En el momento que te interese parar el cronómetro restas del valor de %TIMEMS esa misma variable. La diferencia son los milisegundos transcurridos entre esas dos operaciones. Luego puedes usar ese resultado en un flash, en una operación, para devolverlo a otra tarea ... lo que se te ocurra.

En acciones de Tasker la cosa sería tal que así...

Establecer variable [ Nombre:%tictac A:%TIMEMS ]
...
...
...
Establecer variable [ Nombre:%tictac A:%TIMEMS-%tictac Calcular:Encendido ]
Flash [ Texto:%tictac Largo:Encendido ]

Yo uso mucho este sistema para afinar las tareas y conseguir la mejor velocidad de ejecución. Tanto lo uso que he terminado por hacerme una pequeña subtarea que me soluciona el 99% de las situaciones.

Esta es la subtarea...

TicTac (666)
A1: Devolver [ Valor:%TIMEMS Detener:Encendido ] Si (if) [ %par1 No ajust. ]
A2: Establecer variable [ Nombre:%tictac A:%TIMEMS-%par1 Calcular:Encendido ]
A3: Flash [ Texto:%tictac ] Si (if) [ %par2 Ajust. ]
A4: Devolver [ Valor:%tictac Detener:Encendido ]

Para iniciar el cronómetro...

Realizar tarea [ Nombre:TicTac Devolver Valor de Variable:%tiempo ]

Si quiero ver el tiempo transcurrido...

Realizar tarea [ Nombre:TicTac Parámetro 1 (%par1):%tiempo Parámetro 2 (%par2):VER ]

Para guardar el tiempo transcurrido en la misma variable...

Realizar tarea [ Nombre:TicTac Parámetro 1 (%par1):%tiempo Devolver Valor de Variable:%tiempo ]

*Las dos anteriores se pueden combinar.

Y si quiero tomar varias referencias de tiempo a lo largo de una tarea...

Realizar tarea [ Nombre:TicTac Devolver Valor de Variable:%tiempo ]
...
...
Realizar tarea [ Nombre:TicTac Parámetro 1 (%par1):%tiempo Devolver Valor de Variable:%tiempo1 ]
...
...
Realizar tarea [ Nombre:TicTac Parámetro 1 (%par1):%tiempo Devolver Valor de Variable:%tiempo2 ]
...
...
Flash [ Texto:%tiempo1,%tiempo2 ]

Añadir acciones a una tarea para medir cuánto tarda en ejecutarse modifica su duración (unos pocos milisegundos), y la precisión de la medición que hace Tasker es "cuestionable", pero como aproximación no está mal.

Saludos :cucu:

Caravantes
29/02/16, 22:39:52
Tarea para cronometrar procesos

Genial, Willy. Muchas gracias.

cace0353
01/03/16, 17:03:19
Hola WillyWeb,

Ya ví tu post ayer y no le hice mucho caso... He usado %TIMES algunas veces para controlar la velocidad de procesamiento y no le dí la atención necesaria.

Solo me dí cuenta de que, al parecer habia un error, ya que habias escrito %TIMEMS. Luego, pensando en el asundo y extrañado de que cometieras este error, interpreté que esta "M" a lo mejor se referia al tiempo expresado en milisegundos.

Repasé las variables que nos ofrece Tasker y no la encontré... Pero, viendo de quién viene, he preparado una tarea simple de lectura de una base de datos usando %TIMEMS al principio y al final para obtener el tiempo total de ejecución.

Sorpresa, funciona!!!, me dá el tiempo en milisegundos

Gracias de nuevo por tus aportes, compañero

WillyWeb
01/03/16, 17:08:57
Repasé las variables que nos ofrece Tasker y no la encontré...

Supongo que has mirado en la versión en español del manual de usuario de Tasker...

http://tasker.dinglisch.net/userguide/es/index.html

...pero ese manual no está actualizado. (Note: the translated versions of the userguide is badly out-of-date, the most up-to-date version is in English.)

La versión en inglés sí está completa...

http://tasker.dinglisch.net/userguide/en/index.html

:ok:

ruco1980
01/03/16, 17:10:30
Hola cace0353.... La variable interna sí que está en Tasker... Viene reflejada como "hora en milisegundos".
PD: A mi también me costó encontrarla... De hecho cuando hice la transcripción de la tarea de borrar fotos duplicadas la escribí la variable a mano pensando que no era interna de Tasker...
Saludos.

Edito: se me ha adelantado WillyWeb mientras escribía

cace0353
01/03/16, 17:26:38
Acabo de comprobarlo. La buscaba en la T de tiempo…. :-*

Gracias. Esto va mejorando!. Al principio contaba los segundos a ojo: uno… dos… tres… cuatro…
WillyWeb , se podria dividir el resultado por 1000 y tendriamos segundos con tres decimales o bién, para quedarnos con segundos y centésimas operar el resultado así:
round(%tiempo_transcurrido/10)/100

WillyWeb
01/03/16, 18:02:11
... se podria dividir el resultado por 1000 y tendriamos segundos con tres decimales o bién, para quedarnos con segundos y centésimas operar el resultado así: round(%tiempo_transcurrido/10)/100

Desde el resultado en milisegundos puedes hacer las conversiones que consideres oportunas. Mi prioridad era no añadir tiempo extra con cálculos adicionales, por eso no he hecho ninguna conversión.

:ok:

Mx WaR HaBiB
01/03/16, 18:04:33
pero ese manual no está actualizado. (Note: the translated versions of the userguide is badly out-of-date, the most up-to-date version is in English.)

La versión en inglés sí está completa...

http://tasker.dinglisch.net/userguide/en/index.html

gracias WillyWeb se aprende mucho con ustedes por aquí. :ok:

Caravantes
16/07/18, 21:23:23
En acciones de Tasker la cosa sería tal que así...
Establecer variable [ Nombre:%tictac A:%TIMEMS ]
...
...
...
Establecer variable [ Nombre:%tictac A:%TIMEMS-%tictac Calcular:Encendido ]
Flash [ Texto:%tictac Largo:Encendido ]

Hola Willy.
Estoy tratando de empezar a medir milisegundos tal como has explicado en el primer post de este hilo.
Empecé haciendo una tarea de prueba que solo tiene las tres acciones que he copiado arriba. Funciona muy bien, y ejecutándolo varias veces me ha sorprendido que los resultados varíen entre 1 y 0 (cero): Un milisegundo (o menos) transcurridos entre la primera y la segunda acción. Genial, es menos tiempo del que esperaba, y deduzco que las mediciones pueden ser bastante precisas.

Luego me he hecho la subtarea tal y como la tienes en el primer post.

MiscTicTac (210)
<Esta subtarea permite cronometrar tiempos en milisegundos>
A1: Anchor
A2: Devolver [ Valor:%TIMEMS Detener:Encendido ] Si (if) [ %par1 No ajust. ]
A3: Establecer variable [ Nombre:%tictac A:%TIMEMS-%par1 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A4: Flash [ Texto:%tictac Largo:Apagado ] Si (if) [ %par2 Ajuste ]
A5: Devolver [ Valor:%tictac Detener:Encendido ]

También he hecho otra tarea principal que solo tiene dos acciones para probar la subtarea:

A1: Realizar tarea [ Nombre:MiscTicTac Prioridad:%priority+1 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%tiempo Detener:Apagado ]
A2: Realizar tarea [ Nombre:MiscTicTac Prioridad:%priority+1 Parámetro 1 (%par1):%tiempo Parámetro 2 (%par2):VER Devolver Valor de Variable: Detener:Apagado ]

El problema es que aquí, desde esta tarea principal obtengo unos tiempos que varían entre 94 y 213 milisegundos, lo cual no me parece aceptable ni siquiera como aproximación: son tiempos demasiado altos y con un rango amplio que parece indicar poca fiabilidad en la medición. Creo recordar que en algún otro hilo tú has dicho que cierta tarea tardaba (del orden de) 50 milisegundos. ¿Lo has medido con la subtarea TicTac? ¿Estoy haciendo algo mal?

WillyWeb
16/07/18, 21:32:53
... son tiempos demasiado altos y con un rango amplio que parece indicar poca fiabilidad en la medición.

Ya. Es que Tasker es así de "especial". :oh:

Creo recordar que en algún otro hilo tú has dicho que cierta tarea tardaba (del orden de) 50 milisegundos. ¿Lo has medido con la subtarea TicTac?

No. Cuando los tiempos son tan pequeños suelo usar la medición directa que describo al principio del post.