Mercurial > piecrust2
changeset 803:bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 29 Sep 2016 21:59:20 -0700 |
parents | 0da1207472d3 |
children | 08e6484a2600 |
files | piecrust/plugins/base.py piecrust/rendering.py |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/plugins/base.py Thu Sep 29 21:52:18 2016 -0700 +++ b/piecrust/plugins/base.py Thu Sep 29 21:59:20 2016 -0700 @@ -63,7 +63,8 @@ def getTemplateEngines(self): return self._getPluginComponents( 'getTemplateEngines', - initialize=True, register_timer=True) + initialize=True, register_timer=True, + register_timer_suffixes=['_segment', '_layout']) def getDataProviders(self): return self._getPluginComponents('getDataProviders') @@ -135,7 +136,9 @@ return plugin def _getPluginComponents(self, name, *, - initialize=False, register_timer=False, + initialize=False, + register_timer=False, + register_timer_suffixes=None, order_key=None): if name in self._componentCache: return self._componentCache[name] @@ -151,7 +154,12 @@ if register_timer: for comp in plugin_components: - self.app.env.registerTimer(comp.__class__.__name__) + if not register_timer_suffixes: + self.app.env.registerTimer(comp.__class__.__name__) + else: + for s in register_timer_suffixes: + self.app.env.registerTimer( + comp.__class__.__name__ + s) if order_key is not None: all_components.sort(key=order_key)
--- a/piecrust/rendering.py Thu Sep 29 21:52:18 2016 -0700 +++ b/piecrust/rendering.py Thu Sep 29 21:59:20 2016 -0700 @@ -279,7 +279,8 @@ for seg_part in seg.parts: part_format = seg_part.fmt or format_name try: - with app.env.timerScope(engine.__class__.__name__): + with app.env.timerScope( + engine.__class__.__name__ + '_segment'): part_text = engine.renderSegmentPart( page.path, seg_part, page_data) except TemplatingError as err: @@ -324,7 +325,7 @@ engine = get_template_engine(page.app, engine_name) try: - with page.app.env.timerScope(engine.__class__.__name__): + with page.app.env.timerScope(engine.__class__.__name__ + '_layout'): output = engine.renderFile(full_names, layout_data) except TemplateNotFoundError as ex: logger.exception(ex)