diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-03-24 11:58:22 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-03-24 11:58:22 -0400 |
commit | 74a91a6f5e8f6d6142d1545ddc5a1b35c02ea211 (patch) | |
tree | 789daa134e98be99943dd09a63d36c3030004f78 | |
parent | 10228fad9797a85a879286eb51ec4ea287225c97 (diff) | |
parent | 8a63bd29574feb925d4b7945007f7941c6f5cbfa (diff) | |
download | mako-74a91a6f5e8f6d6142d1545ddc5a1b35c02ea211.tar.gz |
Merged in fero14041/mako-benchmark-add_jinja (pull request #1)
-rw-r--r-- | examples/bench/basic.py | 40 | ||||
-rw-r--r-- | examples/bench/jinja2/footer.html | 2 | ||||
-rw-r--r-- | examples/bench/jinja2/header.html | 3 | ||||
-rw-r--r-- | examples/bench/jinja2/template.html | 31 | ||||
-rw-r--r-- | examples/bench/jinja2_inheritance/base.html | 24 | ||||
-rw-r--r-- | examples/bench/jinja2_inheritance/template.html | 15 |
6 files changed, 102 insertions, 13 deletions
diff --git a/examples/bench/basic.py b/examples/bench/basic.py index f5524b9..6835065 100644 --- a/examples/bench/basic.py +++ b/examples/bench/basic.py @@ -43,15 +43,21 @@ def u(stringlit): else: return stringlit.decode('latin1') -__all__ = ['mako', 'mako_inheritance', 'cheetah', 'django', 'myghty', 'genshi', 'kid'] +__all__ = ['mako', 'mako_inheritance', 'jinja2', 'jinja2_inheritance', + 'cheetah', 'django', 'myghty', 'genshi', 'kid'] + +# Templates content and constants +TITLE = 'Just a test' +USER = 'joe' +ITEMS = ['Number %d' % num for num in range(1, 15)] +U_ITEMS = [u(item) for item in ITEMS] def genshi(dirname, verbose=False): from genshi.template import TemplateLoader loader = TemplateLoader([dirname], auto_reload=False) template = loader.load('template.html') def render(): - data = dict(title='Just a test', user='joe', - items=['Number %d' % num for num in range(1, 15)]) + data = dict(title=TITLE, user=USER, items=ITEMS) return template.generate(**data).render('xhtml') if verbose: @@ -62,8 +68,7 @@ def myghty(dirname, verbose=False): from myghty import interp interpreter = interp.Interpreter(component_root=dirname) def render(): - data = dict(title='Just a test', user='joe', - items=['Number %d' % num for num in range(1, 15)]) + data = dict(title=TITLE, user=USER, items=ITEMS) buffer = StringIO() interpreter.execute("template.myt", request_args=data, out_buffer=buffer) return buffer.getvalue() @@ -78,19 +83,30 @@ def mako(dirname, verbose=False): lookup = TemplateLookup(directories=[dirname], filesystem_checks=False, disable_unicode=disable_unicode) template = lookup.get_template('template.html') def render(): - return template.render(title="Just a test", user="joe", list_items=[u('Number %d') % num for num in range(1,15)]) + return template.render(title=TITLE, user=USER, list_items=U_ITEMS) if verbose: print(template.code + " " + render()) return render mako_inheritance = mako +def jinja2(dirname, verbose=False): + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader(dirname)) + template = env.get_template('template.html') + def render(): + return template.render(title=TITLE, user=USER, list_items=U_ITEMS) + if verbose: + print(render()) + return render +jinja2_inheritance = jinja2 + def cheetah(dirname, verbose=False): from Cheetah.Template import Template filename = os.path.join(dirname, 'template.tmpl') template = Template(file=filename) def render(): - template.__dict__.update({'title': 'Just a test', 'user': 'joe', - 'list_items': [u('Number %d') % num for num in range(1, 15)]}) + template.__dict__.update({'title': TITLE, 'user': USER, + 'list_items': U_ITEMS}) return template.respond() if verbose: @@ -108,8 +124,7 @@ def django(dirname, verbose=False): tmpl = loader.get_template('template.html') def render(): - data = {'title': 'Just a test', 'user': 'joe', - 'items': ['Number %d' % num for num in range(1, 15)]} + data = {'title': TITLE, 'user': USER, 'items': ITEMS} return tmpl.render(template.Context(data)) if verbose: @@ -122,8 +137,7 @@ def kid(dirname, verbose=False): template = kid.Template(file='template.kid') def render(): template = kid.Template(file='template.kid', - title='Just a test', user='joe', - items=['Number %d' % num for num in range(1, 15)]) + title=TITLE, user=USER, items=ITEMS) return template.serialize(output='xhtml') if verbose: @@ -143,7 +157,7 @@ def run(engines, number=2000, verbose=False): t = timeit.Timer(setup='from __main__ import %s; render = %s(r"%s", %s)' % (engine, engine, dirname, verbose), stmt='render()') - + time = t.timeit(number=number) / number if verbose: print('--------------------------------------------------------') diff --git a/examples/bench/jinja2/footer.html b/examples/bench/jinja2/footer.html new file mode 100644 index 0000000..1b00330 --- /dev/null +++ b/examples/bench/jinja2/footer.html @@ -0,0 +1,2 @@ +<div id="footer"> +</div> diff --git a/examples/bench/jinja2/header.html b/examples/bench/jinja2/header.html new file mode 100644 index 0000000..ccb2fb7 --- /dev/null +++ b/examples/bench/jinja2/header.html @@ -0,0 +1,3 @@ +<div id="header"> + <h1>{{ title }}</h1> +</div> diff --git a/examples/bench/jinja2/template.html b/examples/bench/jinja2/template.html new file mode 100644 index 0000000..5965e0d --- /dev/null +++ b/examples/bench/jinja2/template.html @@ -0,0 +1,31 @@ +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> + <head> + <title>{{ title }}</title> + </head> + <body> + + {%- macro greeting(name) %} + <p>hello {{ name }}</p> + {%- endmacro %} + + {% include "header.html" %} + + {{ greeting(user) }} + {{ greeting('me') }} + {{ greeting('world') }} + + <h2>Loop</h2> + {%- if list_items %} + <ul> + {%- for list_item in list_items %} + <li {{ "class='last'" if loop.last else "" }}>{{ list_item }}</li> + {%- endfor %} + </ul> + {%- endif %} + + {% include "footer.html" %} + </body> +</html> diff --git a/examples/bench/jinja2_inheritance/base.html b/examples/bench/jinja2_inheritance/base.html new file mode 100644 index 0000000..c10a434 --- /dev/null +++ b/examples/bench/jinja2_inheritance/base.html @@ -0,0 +1,24 @@ +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> + <head> + <title>{{ title }}</title> + </head> + <body> + +{%- macro greeting(name) %} + <p>hello {{ name }}</p> +{%- endmacro %} + + <div id="header"> + <h1>{{ title }}</h1> + </div> + +{%- block body %}{%- endblock %} + + <div id="footer"> + </div> + + </body> +</html> diff --git a/examples/bench/jinja2_inheritance/template.html b/examples/bench/jinja2_inheritance/template.html new file mode 100644 index 0000000..7e1b781 --- /dev/null +++ b/examples/bench/jinja2_inheritance/template.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block body %} + {{ greeting(user) }} + {{ greeting('me') }} + {{ greeting('world') }} + + <h2>Loop</h2> + {%- if list_items %} + <ul> + {%- for list_item in list_items %} + <li {{ "class='last'" if loop.last else ""}}>{{ list_item }}</li> + {%- endfor %} + </ul> + {%- endif %} +{% endblock body %} |