# HG changeset patch # User Pierre-Yves David # Date 2017-06-09 10:41:47 # Node ID 37ec8f24d91235f13ee955b520d93f84454a674a # Parent 086c1ef0f6660b94b6dcd8800e2272d558829963 profile: introduce a knob to control if the context is actually profiling This is a step toward allowing context where the profiling in enabled withing the context range. This also open the way to kill the dedicated "maybeprofile" context manager and keep only one of 'profile' and 'maybeprofile'. diff --git a/mercurial/profiling.py b/mercurial/profiling.py --- a/mercurial/profiling.py +++ b/mercurial/profiling.py @@ -147,17 +147,19 @@ class profile(object): Profiling is active when the context manager is active. When the context manager exits, profiling results will be written to the configured output. """ - def __init__(self, ui): + def __init__(self, ui, enabled=True): self._ui = ui self._output = None self._fp = None self._profiler = None + self._enabled = enabled self._entered = False self._started = False def __enter__(self): self._entered = True - self.start() + if self._enabled: + self.start() def start(self): """Start profiling. @@ -228,8 +230,5 @@ def maybeprofile(ui): just use a single code path for calling into code you may want to profile and this function determines whether to start profiling. """ - if ui.configbool('profiling', 'enabled'): - with profile(ui): - yield - else: + with profile(ui, enabled=ui.configbool('profiling', 'enabled')): yield