Renamed urlescape to urlencode
[jinja2.git] / examples / profile.py
1 try:
2     from cProfile import Profile
3 except ImportError:
4     from profile import Profile
5 from pstats import Stats
6 from jinja2 import Environment as JinjaEnvironment
7
8 context = {
9     'page_title': 'mitsuhiko\'s benchmark',
10     'table': [dict(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10) for x in range(1000)]
11 }
12
13 source = """\
14 % macro testmacro(x)
15   <span>${x}</span>
16 % endmacro
17 <!doctype html>
18 <html>
19   <head>
20     <title>${page_title|e}</title>
21   </head>
22   <body>
23     <div class="header">
24       <h1>${page_title|e}</h1>
25     </div>
26     <div class="table">
27       <table>
28       % for row in table
29         <tr>
30         % for cell in row
31           <td>${testmacro(cell)}</td>
32         % endfor
33         </tr>
34       % endfor
35       </table>
36     </div>
37   </body>
38 </html>\
39 """
40 jinja_template = JinjaEnvironment(
41     line_statement_prefix='%',
42     variable_start_string="${",
43     variable_end_string="}"
44 ).from_string(source)
45 print jinja_template.environment.compile(source, raw=True)
46
47
48 p = Profile()
49 p.runcall(lambda: jinja_template.render(context))
50 stats = Stats(p)
51 stats.sort_stats('time', 'calls')
52 stats.print_stats()