Does cProfile include IO wait time?
Robert Kern
robert.kern at gmail.com
Wed Jul 8 12:38:33 EDT 2009
On 2009-07-04 19:03, Matthew Wilson wrote:
> I have a command-line script that loads about 100 yaml files. It takes
> 2 or 3 seconds. I profiled my code and I'm using pstats to find what is
> the bottleneck.
>
> Here's the top 10 functions, sorted by internal time:
>
> In [5]: _3.sort_stats('time').print_stats(10)
> Sat Jul 4 13:25:40 2009 pitz_prof
>
> 756872 function calls (739759 primitive calls) in 8.621 CPU seconds
>
> Ordered by: internal time
> List reduced from 1700 to 10 due to restriction<10>
>
> ncalls tottime percall cumtime percall filename:lineno(function)
> 15153 0.446 0.000 0.503 0.000 build/bdist.linux-i686/egg/yaml/reader.py:134(forward)
> 30530 0.424 0.000 0.842 0.000 build/bdist.linux-i686/egg/yaml/scanner.py:142(need_more_tokens)
> 98037 0.423 0.000 0.423 0.000 build/bdist.linux-i686/egg/yaml/reader.py:122(peek)
> 1955 0.415 0.000 1.265 0.001 build/bdist.linux-i686/egg/yaml/scanner.py:1275(scan_plain)
> 69935 0.381 0.000 0.381 0.000 {isinstance}
> 18901 0.329 0.000 3.908 0.000 build/bdist.linux-i686/egg/yaml/scanner.py:113(check_token)
> 5414 0.277 0.000 0.794 0.000 /home/matt/projects/pitz/pitz/__init__.py:34(f)
> 30935 0.258 0.000 0.364 0.000 build/bdist.linux-i686/egg/yaml/scanner.py:276(stale_possible_simple_keys)
> 18945 0.192 0.000 0.314 0.000 /usr/local/lib/python2.6/uuid.py:180(__cmp__)
> 2368 0.172 0.000 1.345 0.001 build/bdist.linux-i686/egg/yaml/parser.py:268(parse_node)
>
> I expected to see a bunch of my IO file-reading code in there, but I don't. So
> this makes me think that the profiler uses CPU time, not
> clock-on-the-wall time.
It should be basically wall-clock time on Linux. The timer function underneath
is gettimeofday(2). Look in Modules/_lsprof.c of the Python sources for the
function hpTimer().
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list