Advertisement
Guest User

Benchmark Jinja2 vs DTL

a guest
Feb 24th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1. from django.conf import settings
  2. settings.configure()
  3.  
  4. import timeit
  5.  
  6. ITERS = 10**3
  7. REPEATS = 3
  8.  
  9. jinja2_setup = """
  10. import jinja2
  11. def jinja2_loader(name):
  12.    print '(jinja2) loading template', name
  13.    if name == "i":
  14.        return " "
  15.    elif name == "include":
  16.        return r'{% for i in range_ %}{% include "i" %}{% endfor %}'
  17.    elif name == "noop":
  18.        return "{% for i in range_ %} {% endfor %}"
  19.  
  20. env = jinja2.Environment(loader=jinja2.FunctionLoader(jinja2_loader))
  21. t_noop = env.get_template("noop")
  22. t_include = env.get_template("include")
  23. context = {'range_': range(50)}
  24. """
  25.  
  26. django_setup = """
  27. import django
  28. from django import template
  29. from django.conf import settings
  30. from django.test.utils import setup_test_template_loader, restore_template_loaders
  31. from django.template import loader, Context
  32.  
  33. if hasattr(loader, '_original_template_source_loaders'):
  34.    restore_template_loaders()
  35.  
  36. #settings.configure()
  37. #django.setup()
  38.  
  39. templates = {
  40.    'i': template.Template(r' '),
  41.    'noop': template.Template(r'{% for i in range_ %} {% endfor %}'),
  42.    'include': template.Template(r'{% for i in range_ %}{% include "i" %}{% endfor %}'),
  43. }
  44. setup_test_template_loader(templates, use_cached_loader=True)
  45. t_noop = loader.get_template('noop')
  46. t_include = loader.get_template('include')
  47. context = Context({'range_': range(50)})
  48. """
  49.  
  50.  
  51. def p(name, times):
  52.     print '%-28s %8.3fs  (%.3f %.3f %.3f)' % ((name, min(times)) + tuple(times))
  53.  
  54. jinja2_noop_time = timeit.repeat("t_noop.render(context)", jinja2_setup, repeat=REPEATS, number=ITERS)
  55. jinja2_include_time = timeit.repeat("t_include.render(context)", jinja2_setup, repeat=REPEATS, number=ITERS)
  56.  
  57. django_noop_time = timeit.repeat("t_noop.render(context)", django_setup, repeat=REPEATS, number=ITERS)
  58. django_include_time = timeit.repeat("t_include.render(context)", django_setup, repeat=REPEATS, number=ITERS)
  59.  
  60. p('jinja2 empty for', jinja2_noop_time)
  61. p('jinja2 include', jinja2_include_time)
  62.  
  63. p('django empty for', django_noop_time)
  64. p('django include', django_include_time)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement