para - ¿Cómo leo la salida del comando IPython% prun(profiler)?
ipython vs jupyter (1)
Yo corro esto:
In [303]: %prun my_function()
384707 function calls (378009 primitive calls) in 83.116 CPU seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
37706 41.693 0.001 41.693 0.001 {max}
20039 36.000 0.002 36.000 0.002 {min}
18835 1.848 0.000 2.208 0.000 helper.py:119(fftfreq)
--recorte--
¿Qué hacen cada uno de tottime, percall, cumtime? ncalls es bastante obvio (número de veces que se llama la función). Supongo que tottime es el tiempo total empleado en la función, excluyendo el tiempo empleado en sus propias llamadas de función; percall es ???; cumtime es el tiempo total empleado en la llamada de función, incluido el tiempo empleado en sus propias llamadas de función (pero, por supuesto, excluyendo la doble contabilización). Los docs no son muy útiles; La búsqueda de Google tampoco ayuda.
Es solo un envoltorio conveniente para el propio generador de perfiles de Python, cuya documentación está aquí:
http://docs.python.org/library/profile.html#module-pstats
Citando
ncalls para el número de llamadas,
tiempo límite para el tiempo total empleado en la función dada (y excluyendo el tiempo realizado en llamadas a subfunciones),
percall es el cociente de tottime dividido por ncalls
cumtime es el tiempo total empleado en esta y todas las subfunciones (desde la invocación hasta la salida). Esta cifra es precisa incluso para funciones recursivas.
percall es el cociente de tiempo de ejecución dividido por llamadas primitivas