Mercurial > piecrust2
changeset 586:59268b4d8c71
bake: Add new performance timers.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 10 Jan 2016 10:51:11 -0800 |
parents | 25df894f9ab9 |
children | d4a01a023998 |
files | piecrust/app.py piecrust/baking/single.py piecrust/rendering.py |
diffstat | 3 files changed, 30 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/app.py Sat Jan 02 16:39:26 2016 -0800 +++ b/piecrust/app.py Sun Jan 10 10:51:11 2016 -0800 @@ -42,6 +42,11 @@ self.env.registerTimer('SiteConfigLoad') self.env.registerTimer('PageLoad') self.env.registerTimer("PageDataBuild") + self.env.registerTimer("BuildRenderData") + self.env.registerTimer("PageRender") + self.env.registerTimer("PageRenderSegments") + self.env.registerTimer("PageRenderLayout") + self.env.registerTimer("PageSerialize") @cached_property def config(self):
--- a/piecrust/baking/single.py Sat Jan 02 16:39:26 2016 -0800 +++ b/piecrust/baking/single.py Sun Jan 10 10:51:11 2016 -0800 @@ -159,13 +159,15 @@ if tax_info: ctx.setTaxonomyFilter(tax_info.term) - rp = render_page(ctx) + with self.app.env.timerScope("PageRender"): + rp = render_page(ctx) - out_dir = os.path.dirname(out_path) - _ensure_dir_exists(out_dir) + with self.app.env.timerScope("PageSerialize"): + out_dir = os.path.dirname(out_path) + _ensure_dir_exists(out_dir) - with codecs.open(out_path, 'w', 'utf8') as fp: - fp.write(rp.content) + with open(out_path, 'w', encoding='utf8') as fp: + fp.write(rp.content) return rp
--- a/piecrust/rendering.py Sat Jan 02 16:39:26 2016 -0800 +++ b/piecrust/rendering.py Sun Jan 10 10:51:11 2016 -0800 @@ -234,7 +234,8 @@ eis.pushPage(ctx.page, ctx) try: # Build the data for both segment and layout rendering. - page_data = _build_render_data(ctx) + with ctx.app.env.timerScope("BuildRenderData"): + page_data = _build_render_data(ctx) # Render content segments. ctx.setCurrentPass(PASS_FORMATTING) @@ -242,16 +243,17 @@ save_to_fs = True if ctx.app.env.fs_cache_only_for_main_page and not eis.is_main_page: save_to_fs = False - if repo and not ctx.force_render: - render_result = repo.get( - ctx.uri, - lambda: _do_render_page_segments(ctx.page, page_data), - fs_cache_time=ctx.page.path_mtime, - save_to_fs=save_to_fs) - else: - render_result = _do_render_page_segments(ctx.page, page_data) - if repo: - repo.put(ctx.uri, render_result, save_to_fs) + with ctx.app.env.timerScope("PageRenderSegments"): + if repo and not ctx.force_render: + render_result = repo.get( + ctx.uri, + lambda: _do_render_page_segments(ctx.page, page_data), + fs_cache_time=ctx.page.path_mtime, + save_to_fs=save_to_fs) + else: + render_result = _do_render_page_segments(ctx.page, page_data) + if repo: + repo.put(ctx.uri, render_result, save_to_fs) # Render layout. page = ctx.page @@ -261,8 +263,11 @@ layout_name = page.source.config.get('default_layout', 'default') null_names = ['', 'none', 'nil'] if layout_name not in null_names: - build_layout_data(page, page_data, render_result['segments']) - layout_result = _do_render_layout(layout_name, page, page_data) + with ctx.app.env.timerScope("BuildRenderData"): + build_layout_data(page, page_data, render_result['segments']) + + with ctx.app.env.timerScope("PageRenderLayout"): + layout_result = _do_render_layout(layout_name, page, page_data) else: layout_result = { 'content': render_result['segments']['content'],