Python includes a profiler called cProfile. This is generally preferred over using timeit.
It breaks down your entire script and for each method in your script it tells you:
ncalls
: The number of times a method was calledtottime
: Total time spent in the given function (excluding time made in calls to sub-functions)percall
: Time spent per call. Or the quotient of tottime divided by ncallscumtime
: The cumulative time spent in this and all subfunctions (from invocation till exit). This figure is accurate even for recursive functions.percall
: is the quotient of cumtime divided by primitive callsfilename:lineno(function)
: provides the respective data of each functionThe cProfiler can be easily called on Command Line using:
$ python -m cProfile main.py
To sort the returned list of profiled methods by the time taken in the method:
$ python -m cProfile -s time main.py