diff piecrust/plugins/base.py @ 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 ab5c6a8ae90a
children 7d83b9484b98
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)