[Python-es] Pythoniano y c niano

Chema Cortes pych3m4 en gmail.com
Jue Dic 27 01:58:13 CET 2012


El día 27 de diciembre de 2012 00:50, Daπid <davidmenhur en gmail.com> escribió:
> Más fácil:
>
> import time
>
> t0 = time.time()
>
> [...]
>
> dt = time.time() - t0
>
> print int(dt / 3600), ':', int(dt % 3600 / 60), ':', dt % 60
>
> Si quieres, puedes meter eso en un decorador, pero yo lo uso
> directamente. Así puedo medir tanto las funciones como el resto del
> proceso.

No sé si nos estamos saliendo del tema.

Existe un problema, time.time depende de la plataforma. En windows,
por ejemplo, es más preciso time.clock, reloj del sistema, que
time.time, tiempo de proceso. En linux es al revés. En python 3.3 se
introduce time.perf_counter() que ofrece siempre el reloj más preciso
para hacer una medición "benchmark" y time.process_time() para medir
tiempos de CPU "profiling".[1]

Por éso es recomendable usar el módulo timeit para medir pequeños
fragmentos de código. Timeit usa siempre el reloj más preciso, además
de desactivar servicios que podrían afectar a la medida como el
"recolector de basura" (garbage collector).

Lo más sencillo para usar timeit es emplear ipython o invocarlo
directamente como módulo:

  python -m timeit -n100 miprograma.py



[1]: http://www.python.org/dev/peps/pep-0418 "PEP-0418"

-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


Más información sobre la lista de distribución Python-es