Mercurial > piecrust2
comparison piecrust/rendering.py @ 586:59268b4d8c71
bake: Add new performance timers.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 10 Jan 2016 10:51:11 -0800 |
parents | 683be25cbdb2 |
children | 33ab9badfd7a |
comparison
equal
deleted
inserted
replaced
585:25df894f9ab9 | 586:59268b4d8c71 |
---|---|
232 def render_page(ctx): | 232 def render_page(ctx): |
233 eis = ctx.app.env.exec_info_stack | 233 eis = ctx.app.env.exec_info_stack |
234 eis.pushPage(ctx.page, ctx) | 234 eis.pushPage(ctx.page, ctx) |
235 try: | 235 try: |
236 # Build the data for both segment and layout rendering. | 236 # Build the data for both segment and layout rendering. |
237 page_data = _build_render_data(ctx) | 237 with ctx.app.env.timerScope("BuildRenderData"): |
238 page_data = _build_render_data(ctx) | |
238 | 239 |
239 # Render content segments. | 240 # Render content segments. |
240 ctx.setCurrentPass(PASS_FORMATTING) | 241 ctx.setCurrentPass(PASS_FORMATTING) |
241 repo = ctx.app.env.rendered_segments_repository | 242 repo = ctx.app.env.rendered_segments_repository |
242 save_to_fs = True | 243 save_to_fs = True |
243 if ctx.app.env.fs_cache_only_for_main_page and not eis.is_main_page: | 244 if ctx.app.env.fs_cache_only_for_main_page and not eis.is_main_page: |
244 save_to_fs = False | 245 save_to_fs = False |
245 if repo and not ctx.force_render: | 246 with ctx.app.env.timerScope("PageRenderSegments"): |
246 render_result = repo.get( | 247 if repo and not ctx.force_render: |
247 ctx.uri, | 248 render_result = repo.get( |
248 lambda: _do_render_page_segments(ctx.page, page_data), | 249 ctx.uri, |
249 fs_cache_time=ctx.page.path_mtime, | 250 lambda: _do_render_page_segments(ctx.page, page_data), |
250 save_to_fs=save_to_fs) | 251 fs_cache_time=ctx.page.path_mtime, |
251 else: | 252 save_to_fs=save_to_fs) |
252 render_result = _do_render_page_segments(ctx.page, page_data) | 253 else: |
253 if repo: | 254 render_result = _do_render_page_segments(ctx.page, page_data) |
254 repo.put(ctx.uri, render_result, save_to_fs) | 255 if repo: |
256 repo.put(ctx.uri, render_result, save_to_fs) | |
255 | 257 |
256 # Render layout. | 258 # Render layout. |
257 page = ctx.page | 259 page = ctx.page |
258 ctx.setCurrentPass(PASS_RENDERING) | 260 ctx.setCurrentPass(PASS_RENDERING) |
259 layout_name = page.config.get('layout') | 261 layout_name = page.config.get('layout') |
260 if layout_name is None: | 262 if layout_name is None: |
261 layout_name = page.source.config.get('default_layout', 'default') | 263 layout_name = page.source.config.get('default_layout', 'default') |
262 null_names = ['', 'none', 'nil'] | 264 null_names = ['', 'none', 'nil'] |
263 if layout_name not in null_names: | 265 if layout_name not in null_names: |
264 build_layout_data(page, page_data, render_result['segments']) | 266 with ctx.app.env.timerScope("BuildRenderData"): |
265 layout_result = _do_render_layout(layout_name, page, page_data) | 267 build_layout_data(page, page_data, render_result['segments']) |
268 | |
269 with ctx.app.env.timerScope("PageRenderLayout"): | |
270 layout_result = _do_render_layout(layout_name, page, page_data) | |
266 else: | 271 else: |
267 layout_result = { | 272 layout_result = { |
268 'content': render_result['segments']['content'], | 273 'content': render_result['segments']['content'], |
269 'pass_info': None} | 274 'pass_info': None} |
270 | 275 |