Profiling code with the cProfile extension
cProfile
is a C extension introduced in Python 2.5. It can be used for deterministic profiling. Deterministic profiling means that the time measurements are precise, and no sampling is used. Contrast this with statistical
profiling, where measurements come from random samples. We will profile a small NumPy program, using cProfile
that transposes an array with random values.
How to do it...
Again we require code to profile.
Write the code to profile.
We will write the
transpose
function that creates the array with random values and transposes it:def transpose(n): random_values = numpy.random.random((n, n)) return random_values.T
Run the profiler.
Run the profiler and give it the function to profile:
cProfile.run('transpose(%d)' %(int(sys.argv[1])))
The complete code for this tutorial can be found in the following snippet:
import numpy import cProfile import sys def transpose(n): random_values = numpy.random.random((n, n)) return random_values...