mercurial/statprof.py
changeset 45957 89a2afe31e82
parent 43554 9f70512ae2cf
child 46032 068307b638f4
equal deleted inserted replaced
45956:346af7687c6f 45957:89a2afe31e82
   409 
   409 
   410         state.samples.append(Sample(sites, time))
   410         state.samples.append(Sample(sites, time))
   411 
   411 
   412 
   412 
   413 def reset(frequency=None):
   413 def reset(frequency=None):
   414     '''Clear out the state of the profiler.  Do not call while the
   414     """Clear out the state of the profiler.  Do not call while the
   415     profiler is running.
   415     profiler is running.
   416 
   416 
   417     The optional frequency argument specifies the number of samples to
   417     The optional frequency argument specifies the number of samples to
   418     collect per second.'''
   418     collect per second."""
   419     assert state.profile_level == 0, b"Can't reset() while statprof is running"
   419     assert state.profile_level == 0, b"Can't reset() while statprof is running"
   420     CodeSite.cache.clear()
   420     CodeSite.cache.clear()
   421     state.reset(frequency)
   421     state.reset(frequency)
   422 
   422 
   423 
   423 
   523         fp.write(b'Sample count: %d\n' % len(data.samples))
   523         fp.write(b'Sample count: %d\n' % len(data.samples))
   524         fp.write(b'Total time: %f seconds (%f wall)\n' % data.accumulated_time)
   524         fp.write(b'Total time: %f seconds (%f wall)\n' % data.accumulated_time)
   525 
   525 
   526 
   526 
   527 def display_by_line(data, fp):
   527 def display_by_line(data, fp):
   528     '''Print the profiler data with each sample line represented
   528     """Print the profiler data with each sample line represented
   529     as one row in a table.  Sorted by self-time per line.'''
   529     as one row in a table.  Sorted by self-time per line."""
   530     stats = SiteStats.buildstats(data.samples)
   530     stats = SiteStats.buildstats(data.samples)
   531     stats.sort(reverse=True, key=lambda x: x.selfseconds())
   531     stats.sort(reverse=True, key=lambda x: x.selfseconds())
   532 
   532 
   533     fp.write(
   533     fp.write(
   534         b'%5.5s %10.10s   %7.7s  %-8.8s\n'
   534         b'%5.5s %10.10s   %7.7s  %-8.8s\n'
   552             )
   552             )
   553         )
   553         )
   554 
   554 
   555 
   555 
   556 def display_by_method(data, fp):
   556 def display_by_method(data, fp):
   557     '''Print the profiler data with each sample function represented
   557     """Print the profiler data with each sample function represented
   558     as one row in a table.  Important lines within that function are
   558     as one row in a table.  Important lines within that function are
   559     output as nested rows.  Sorted by self-time per line.'''
   559     output as nested rows.  Sorted by self-time per line."""
   560     fp.write(
   560     fp.write(
   561         b'%5.5s %10.10s   %7.7s  %-8.8s\n'
   561         b'%5.5s %10.10s   %7.7s  %-8.8s\n'
   562         % (b'%  ', b'cumulative', b'self', b'')
   562         % (b'%  ', b'cumulative', b'self', b'')
   563     )
   563     )
   564     fp.write(
   564     fp.write(
   833 
   833 
   834 _pathcache = {}
   834 _pathcache = {}
   835 
   835 
   836 
   836 
   837 def simplifypath(path):
   837 def simplifypath(path):
   838     '''Attempt to make the path to a Python module easier to read by
   838     """Attempt to make the path to a Python module easier to read by
   839     removing whatever part of the Python search path it was found
   839     removing whatever part of the Python search path it was found
   840     on.'''
   840     on."""
   841 
   841 
   842     if path in _pathcache:
   842     if path in _pathcache:
   843         return _pathcache[path]
   843         return _pathcache[path]
   844     hgpath = encoding.__file__.rsplit(os.sep, 2)[0]
   844     hgpath = encoding.__file__.rsplit(os.sep, 2)[0]
   845     for p in [hgpath] + sys.path:
   845     for p in [hgpath] + sys.path: