Mercurial > piecrust2
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()