# HG changeset patch # User Ludovic Chabant # Date 1500823865 25200 # Node ID cedefb806bfd4f24173ae39bf2cba640a5c49d22 # Parent 3e69f18912f5efbdab7d9183f65156d6b63f467b jinja: Use the extensions performance timer. diff -r 3e69f18912f5 -r cedefb806bfd piecrust/templating/jinja/extensions.py --- 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()