equal
deleted
inserted
replaced
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: |