[Tutor] Understanding cProfile output

Dave Angel d at davea.name
Thu Sep 20 22:46:02 CEST 2012


On 09/20/2012 03:56 PM, Steven D'Aprano wrote:
> On 21/09/12 04:58, ranveer raghuwanshi wrote:
>> Hi,
>>
>> I am trying to understand the output of cProfile when run against my
>> python
>> code. The code is:
> [...]
>> What the above code does is it counts the number of prime numbers
>> less than
>> 1,00,000.
>>
>> Now when I profile this code using *python -m cProfile -s time
>> countPrime.py.
> <SNIP>
>
> #result9592
>          90414 function calls in 16.705 seconds
>
>    Ordered by: internal time
>
>    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
>         1   16.374   16.374   16.705   16.705 countPrime.py:1(<module>)
>     90407    0.320    0.000    0.320    0.000 {method 'append' of
> 'list' objects}
>         2    0.011    0.005    0.011    0.005 {range}
>         1    0.000    0.000    0.000    0.000 {math.sqrt}
>         1    0.000    0.000    0.000    0.000 {math.floor}
>         1    0.000    0.000    0.000    0.000 {len}
>         1    0.000    0.000    0.000    0.000 {method 'disable' of
> '_lsprof.Profiler' objects}
>
> <SNIP>
>
>
>> Now what I
>> don't understand is what it means by *tottime=16.374 for function
>> countPrime.py:1(<module>). *I understand fine that it took around
>> *0.320s
>> for method append.*
>>
>> So, is 16.374 the total time my scripts takes but according to
>> profiler the
>> total time is 16.705.
>
I don't know the Python profiler, but I've worked with many others over
the years (and even written one).  It looks like it follows very
reasonable conventions in its output.

tottime is the total time spent in that function, including the
functions it calls.  cumtime is the cumulative time spent in that
function, after deducting for any functions it may have called.  So in
approximate numbers, 16.705 = 16.374 + .320 + .011

Both columns are very useful, as is the ncalls column.  However, the net
result is you didn't learn very much about the efficiency of your algorithm.

Are you looking for suggestions for speeding it up?  Or suggestions for
getting more interesting results from profiling?



-- 

DaveA



More information about the Tutor mailing list