Mercurial > genshi > genshi-test
comparison examples/bench/basic.py @ 487:4811658d7ac0
Improve basic benchmark for Kid by storing the template class outside the render function. Closes #96.
author | cmlenz |
---|---|
date | Mon, 21 May 2007 09:11:36 +0000 |
parents | 0e6ae0ade606 |
children | 661715b49c0c 1837f39efd6f |
comparison
equal
deleted
inserted
replaced
485:770ba8556940 | 487:4811658d7ac0 |
---|---|
1 # -*- encoding: utf-8 -*- | |
2 # Template language benchmarks | |
3 # | |
4 # Objective: Test general templating features using a small template | |
5 | |
1 from cgi import escape | 6 from cgi import escape |
2 import os | 7 import os |
3 from StringIO import StringIO | 8 from StringIO import StringIO |
4 import sys | 9 import sys |
5 import timeit | 10 import timeit |
18 if verbose: | 23 if verbose: |
19 print render() | 24 print render() |
20 return render | 25 return render |
21 | 26 |
22 def myghty(dirname, verbose=False): | 27 def myghty(dirname, verbose=False): |
23 from myghty import interp | 28 try: |
29 from myghty import interp | |
30 except ImportError: | |
31 print>>sys.stderr, 'Mighty not installed, skipping' | |
32 return lambda: None | |
24 interpreter = interp.Interpreter(component_root=dirname) | 33 interpreter = interp.Interpreter(component_root=dirname) |
25 def render(): | 34 def render(): |
26 data = dict(title='Just a test', user='joe', | 35 data = dict(title='Just a test', user='joe', |
27 items=['Number %d' % num for num in range(1, 15)]) | 36 items=['Number %d' % num for num in range(1, 15)]) |
28 buffer = StringIO() | 37 buffer = StringIO() |
32 print render() | 41 print render() |
33 return render | 42 return render |
34 | 43 |
35 def cheetah(dirname, verbose=False): | 44 def cheetah(dirname, verbose=False): |
36 # FIXME: infinite recursion somewhere... WTF? | 45 # FIXME: infinite recursion somewhere... WTF? |
37 from Cheetah.Template import Template | 46 try: |
47 from Cheetah.Template import Template | |
48 except ImportError: | |
49 print>>sys.stderr, 'Cheetah not installed, skipping' | |
50 return lambda: None | |
38 class MyTemplate(Template): | 51 class MyTemplate(Template): |
39 def serverSidePath(self, path): return os.path.join(dirname, path) | 52 def serverSidePath(self, path): return os.path.join(dirname, path) |
40 filename = os.path.join(dirname, 'template.tmpl') | 53 filename = os.path.join(dirname, 'template.tmpl') |
41 template = MyTemplate(file=filename) | 54 template = MyTemplate(file=filename) |
42 | 55 |
52 | 65 |
53 def clearsilver(dirname, verbose=False): | 66 def clearsilver(dirname, verbose=False): |
54 try: | 67 try: |
55 import neo_cgi | 68 import neo_cgi |
56 except ImportError: | 69 except ImportError: |
57 return lambda:None | 70 print>>sys.stderr, 'ClearSilver not installed, skipping' |
71 return lambda: None | |
58 neo_cgi.update() | 72 neo_cgi.update() |
59 import neo_util | 73 import neo_util |
60 import neo_cs | 74 import neo_cs |
61 def render(): | 75 def render(): |
62 hdf = neo_util.HDF() | 76 hdf = neo_util.HDF() |
72 if verbose: | 86 if verbose: |
73 print render() | 87 print render() |
74 return render | 88 return render |
75 | 89 |
76 def django(dirname, verbose=False): | 90 def django(dirname, verbose=False): |
77 from django.conf import settings | 91 try: |
78 settings.configure(TEMPLATE_DIRS=[os.path.join(dirname, 'templates')]) | 92 from django.conf import settings |
93 settings.configure(TEMPLATE_DIRS=[os.path.join(dirname, 'templates')]) | |
94 except ImportError: | |
95 print>>sys.stderr, 'Django not installed, skipping' | |
96 return lambda: None | |
79 from django import template, templatetags | 97 from django import template, templatetags |
80 from django.template import loader | 98 from django.template import loader |
81 templatetags.__path__.append(os.path.join(dirname, 'templatetags')) | 99 templatetags.__path__.append(os.path.join(dirname, 'templatetags')) |
82 tmpl = loader.get_template('template.html') | 100 tmpl = loader.get_template('template.html') |
83 | 101 |
89 if verbose: | 107 if verbose: |
90 print render() | 108 print render() |
91 return render | 109 return render |
92 | 110 |
93 def kid(dirname, verbose=False): | 111 def kid(dirname, verbose=False): |
94 import kid | 112 try: |
113 import kid | |
114 except ImportError: | |
115 print>>sys.stderr, "SimpleTAL not installed, skipping" | |
116 return lambda: None | |
95 kid.path = kid.TemplatePath([dirname]) | 117 kid.path = kid.TemplatePath([dirname]) |
96 template = kid.Template(file='template.kid') | 118 template = kid.load_template('template.kid').Template |
97 def render(): | 119 def render(): |
98 template = kid.Template(file='template.kid', | 120 return template( |
99 title='Just a test', user='joe', | 121 title='Just a test', user='joe', |
100 items=['Number %d' % num for num in range(1, 15)]) | 122 items=['Number %d' % num for num in range(1, 15)] |
101 return template.serialize(output='xhtml') | 123 ).serialize(output='xhtml') |
102 | |
103 if verbose: | |
104 print render() | |
105 return render | |
106 | |
107 def nevow(dirname, verbose=False): | |
108 # FIXME: can't figure out the API | |
109 from nevow.loaders import xmlfile | |
110 template = xmlfile('template.xml', templateDir=dirname).load() | |
111 def render(): | |
112 print template | |
113 | 124 |
114 if verbose: | 125 if verbose: |
115 print render() | 126 print render() |
116 return render | 127 return render |
117 | 128 |
118 def simpletal(dirname, verbose=False): | 129 def simpletal(dirname, verbose=False): |
119 from simpletal import simpleTAL, simpleTALES | 130 try: |
131 from simpletal import simpleTAL, simpleTALES | |
132 except ImportError: | |
133 print>>sys.stderr, "SimpleTAL not installed, skipping" | |
134 return lambda: None | |
120 fileobj = open(os.path.join(dirname, 'base.html')) | 135 fileobj = open(os.path.join(dirname, 'base.html')) |
121 base = simpleTAL.compileHTMLTemplate(fileobj) | 136 base = simpleTAL.compileHTMLTemplate(fileobj) |
122 fileobj.close() | 137 fileobj.close() |
123 fileobj = open(os.path.join(dirname, 'template.html')) | 138 fileobj = open(os.path.join(dirname, 'template.html')) |
124 template = simpleTAL.compileHTMLTemplate(fileobj) | 139 template = simpleTAL.compileHTMLTemplate(fileobj) |