From 3a7e30896bbafeebbdfdb7a85eb4d1a1ca75e4d0 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Wed, 27 Jul 2011 22:01:05 -0700 Subject: [PATCH] Add a template benchmark, based on one in jinja2 --- demos/benchmark/template_benchmark.py | 62 +++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 demos/benchmark/template_benchmark.py diff --git a/demos/benchmark/template_benchmark.py b/demos/benchmark/template_benchmark.py new file mode 100755 index 00000000..07833af7 --- /dev/null +++ b/demos/benchmark/template_benchmark.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# +# A simple benchmark of tornado template rendering, based on +# https://github.com/mitsuhiko/jinja2/blob/master/examples/bench.py + +from timeit import Timer + +from tornado.options import options, define, parse_command_line +from tornado.template import Template + +define('num', default=100, help='number of iterations') + +context = { + 'page_title': 'mitsuhiko\'s benchmark', + '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)] +} + +tmpl = Template("""\ + + + + {{ page_title }} + + +
+

{{ page_title }}

+
+ +
+ + {% for row in table %} + + {% for cell in row %} + + {% end %} + + {% end %} +
{{ cell }}
+
+ +\ +""") + +def render(): + tmpl.generate(**context) + +def main(): + parse_command_line() + t = Timer(render) + results = t.timeit(options.num) / options.num + print '%0.3f ms per iteration' % (results*1000) + +if __name__ == '__main__': + main()