[PATCH 9 of 9 RFC] profiling: make statprof the default profiler (BC)

Augie Fackler raf at durin42.com
Wed Aug 17 11:19:03 EDT 2016


On Mon, Aug 15, 2016 at 10:25:16PM -0700, Gregory Szorc wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1471221528 25200
> #      Sun Aug 14 17:38:48 2016 -0700
> # Node ID d88d80210ff4351734d63b50e1af75f398af8963
> # Parent  1975493743c5f68f28bf9dcf677df09d0265581a
> profiling: make statprof the default profiler (BC)

I'm going to go ahead and queue this. It kind of bums me out to vendor
the whole profiler, but I guess this is probably enough of a better
diagnosis improvement for end users that we should just do it.

The management of https://github.com/bos/statprof.py (me!) would
appreciate sending any important improvements upstream. Thanks!

>
> The statprof sampling profiler runs with significantly less overhead.
> Its data is therefore more useful. Furthermore, its default output
> shows the hotpath by default, which I've found to be way more useful
> than the default profiler's function time table.
>
> diff --git a/mercurial/profiling.py b/mercurial/profiling.py
> --- a/mercurial/profiling.py
> +++ b/mercurial/profiling.py
> @@ -114,20 +114,20 @@ def statprofile(ui, fp):
>  def profile(ui):
>      """Start profiling.
>
>      Profiling is active when the context manager is active. When the context
>      manager exits, profiling results will be written to the configured output.
>      """
>      profiler = os.getenv('HGPROF')
>      if profiler is None:
> -        profiler = ui.config('profiling', 'type', default='ls')
> +        profiler = ui.config('profiling', 'type', default='stat')
>      if profiler not in ('ls', 'stat', 'flame'):
>          ui.warn(_("unrecognized profiler '%s' - ignored\n") % profiler)
> -        profiler = 'ls'
> +        profiler = 'stat'
>
>      output = ui.config('profiling', 'output')
>
>      if output == 'blackbox':
>          fp = util.stringio()
>      elif output:
>          path = ui.expandpath(output)
>          fp = open(path, 'wb')
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list