changeset 908:cedefb806bfd

jinja: Use the extensions performance timer.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 23 Jul 2017 08:31:05 -0700
parents 3e69f18912f5
children eed19a80c00e
files piecrust/templating/jinja/extensions.py
diffstat 1 files changed, 22 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/templating/jinja/extensions.py	Sun Jul 23 08:30:47 2017 -0700
+++ b/piecrust/templating/jinja/extensions.py	Sun Jul 23 08:31:05 2017 -0700
@@ -15,9 +15,14 @@
         lineno = next(parser.stream).lineno
         args = [parser.parse_expression()]
         body = parser.parse_statements(['name:endpcformat'], drop_needle=True)
-        return CallBlock(self.call_method('_format', args),
+        return CallBlock(self.call_method('_formatTimed', args),
                          [], [], body).set_lineno(lineno)
 
+    def _formatTimed(self, format_name, caller=None):
+        with self.environment.app.env.stats.timerScope(
+                'JinjaTemplateEngine_extensions'):
+            return self._format(format_name, caller)
+
     def _format(self, format_name, caller=None):
         body = caller()
         text = format_text(self.environment.app,
@@ -57,9 +62,16 @@
         body = parser.parse_statements(['name:endhighlight', 'name:endgeshi'],
                                        drop_needle=True)
 
-        return CallBlock(self.call_method('_highlight', args, kwargs),
+        return CallBlock(self.call_method('_highlightTimed', args, kwargs),
                          [], [], body).set_lineno(lineno)
 
+    def _highlightTimed(self, lang, line_numbers=False, use_classes=False,
+                        css_class=None, css_id=None, caller=None):
+        with self.environment.app.env.stats.timerScope(
+                'JinjaTemplateEngine_extensions'):
+            return self._highlight(lang, line_numbers, use_classes,
+                                   css_class, css_id, caller)
+
     def _highlight(self, lang, line_numbers=False, use_classes=False,
                    css_class=None, css_id=None, caller=None):
         from pygments import highlight
@@ -120,12 +132,17 @@
         body = parser.parse_statements(['name:endpccache', 'name:endcache'],
                                        drop_needle=True)
 
-        # now return a `CallBlock` node that calls our _cache_support
+        # now return a `CallBlock` node that calls our _renderCache
         # helper method on this extension.
-        return CallBlock(self.call_method('_cache_support', args),
+        return CallBlock(self.call_method('_renderCacheTimed', args),
                          [], [], body).set_lineno(lineno)
 
-    def _cache_support(self, name, caller):
+    def _renderCacheTimed(self, name, caller):
+        with self.environment.app.env.stats.timerScope(
+                'JinjaTemplateEngine_extensions'):
+            return self._renderCache(name, caller)
+
+    def _renderCache(self, name, caller):
         key = self.environment.piecrust_cache_prefix + name
 
         rcs = self.environment.app.env.render_ctx_stack
@@ -139,11 +156,6 @@
             rdr_pass.used_source_names.update(pair[1])
             return pair[0]
 
-        pair = self.environment.piecrust_cache.get(key)
-        if pair is not None:
-            rdr_pass.used_source_names.update(pair[1])
-            return pair[0]
-
         prev_used = rdr_pass.used_source_names.copy()
         rv = caller()
         after_used = rdr_pass.used_source_names.copy()