diff --git a/mercurial/configitems.py b/mercurial/configitems.py --- a/mercurial/configitems.py +++ b/mercurial/configitems.py @@ -947,6 +947,9 @@ coreconfigitem('profiling', 'showmin', default=dynamicdefault, ) +coreconfigitem('profiling', 'showtime', + default=True, +) coreconfigitem('profiling', 'sort', default='inlinetime', ) diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt --- a/mercurial/help/config.txt +++ b/mercurial/help/config.txt @@ -1780,6 +1780,11 @@ The option is unused on other formats. +``showtime`` + Show time taken as absolute durations, in addition to percentages. + Only used by the ``hotpath`` format. + (default: true) + ``progress`` ------------ diff --git a/mercurial/profiling.py b/mercurial/profiling.py --- a/mercurial/profiling.py +++ b/mercurial/profiling.py @@ -147,6 +147,8 @@ # inconsistent config: profiling.showmin limit = ui.configwith(fraction, 'profiling', 'showmin', 0.05) kwargs[r'limit'] = limit + showtime = ui.configbool('profiling', 'showtime') + kwargs[r'showtime'] = showtime statprof.display(fp, data=data, format=displayformat, **kwargs) diff --git a/mercurial/statprof.py b/mercurial/statprof.py --- a/mercurial/statprof.py +++ b/mercurial/statprof.py @@ -678,6 +678,7 @@ for sample in data.samples: root.add(sample.stack[::-1], sample.time - lasttime) lasttime = sample.time + showtime = kwargs.get(r'showtime', True) def _write(node, depth, multiple_siblings): site = node.site @@ -695,7 +696,9 @@ # lots of string formatting listpattern = ''.ljust(indent) +\ ('\\' if multiple_siblings else '|') +\ - ' %4.1f%% %s %s' + ' %4.1f%%' +\ + (' %5.2fs' % node.count if showtime else '') +\ + ' %s %s' liststring = listpattern % (node.count / root.count * 100, filename, function) codepattern = '%' + ('%d' % (55 - len(liststring))) + 's %d: %s'