# HG changeset patch # User Ludovic Chabant # Date 1475211560 25200 # Node ID bf9f4e55f75162bfca7cdad77c44b553d6e9c1c6 # Parent 0da1207472d3518bf94762bc9d30b88884bc188a rendering: Separate performance timers for renering segments and layouts. diff -r 0da1207472d3 -r bf9f4e55f751 piecrust/plugins/base.py --- 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) diff -r 0da1207472d3 -r bf9f4e55f751 piecrust/rendering.py --- 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)