Mercurial > genshi > mirror
annotate examples/bench/run.py @ 76:85f70ec37112 trunk
Add Django to the benchmark.
author | cmlenz |
---|---|
date | Thu, 13 Jul 2006 09:17:21 +0000 |
parents | 1da51d718391 |
children | 8d6bee631a58 |
rev | line source |
---|---|
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
1 from cgi import escape |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
2 import os |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
3 import sys |
69 | 4 import time |
5 import timeit | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
6 |
76 | 7 __all__ = ['markup', 'clearsilver', 'django', 'kid'] |
8 | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
9 def markup(dirname): |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
10 from markup.template import Context, TemplateLoader |
69 | 11 loader = TemplateLoader([dirname], auto_reload=False) |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
12 template = loader.load('template.html') |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
13 def render(): |
76 | 14 ctxt = Context(title='Just a test', user='joe', |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
15 items=['Number %d' % num for num in range(1, 15)]) |
76 | 16 return template.generate(ctxt).render('html') |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
17 return render |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
18 |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
19 def cheetah(dirname): |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
20 # FIXME: infinite recursion somewhere... WTF? |
76 | 21 from Cheetah.Template import Template |
22 class MyTemplate(Template): | |
23 def serverSidePath(self, path): return os.path.join(dirname, path) | |
24 filename = os.path.join(dirname, 'template.tmpl') | |
25 template = MyTemplate(file=filename) | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
26 |
76 | 27 def render(): |
28 template = MyTemplate(file=filename, | |
29 searchList=[{'title': 'Just a test', 'user': 'joe', | |
30 'items': [u'Number %d' % num for num in range(1, 15)]}]) | |
31 return template.respond() | |
32 return render | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
33 |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
34 def clearsilver(dirname): |
76 | 35 import neo_cgi |
36 neo_cgi.update() | |
37 import neo_util | |
38 import neo_cs | |
39 def render(): | |
40 hdf = neo_util.HDF() | |
41 hdf.setValue('hdf.loadpaths.0', dirname) | |
42 hdf.setValue('title', escape('Just a test')) | |
43 hdf.setValue('user', escape('joe')) | |
44 for num in range(1, 15): | |
45 hdf.setValue('items.%d' % (num - 1), escape('Number %d' % num)) | |
46 cs = neo_cs.CS(hdf) | |
47 cs.parseFile('template.cs') | |
48 return cs.render() | |
49 return render | |
50 | |
51 def django(dirname): | |
52 from django.conf import settings | |
53 settings.configure(TEMPLATE_DIRS=[os.path.join(dirname, 'templates')]) | |
54 from django import template, templatetags | |
55 from django.template import loader | |
56 templatetags.__path__.append(os.path.join(dirname, 'templatetags')) | |
57 tmpl = loader.get_template('template.html') | |
58 | |
59 def render(): | |
60 data = {'title': 'Just a test', 'user': 'joe', | |
61 'items': ['Number %d' % num for num in range(1, 15)]} | |
62 return tmpl.render(template.Context(data)) | |
63 return render | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
64 |
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
65 def kid(dirname): |
76 | 66 import kid |
67 kid.path = kid.TemplatePath([dirname]) | |
68 template = kid.Template(file='template.kid') | |
69 def render(): | |
70 template = kid.Template(file='template.kid', | |
71 title='Just a test', user='joe', | |
72 items=['Number %d' % num for num in range(1, 15)]) | |
73 return template.serialize(output='xhtml') | |
74 return render | |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
75 |
61 | 76 def nevow(dirname): |
77 # FIXME: can't figure out the API | |
76 | 78 from nevow.loaders import xmlfile |
79 template = xmlfile('template.xml', templateDir=dirname).load() | |
80 def render(): | |
81 print template | |
82 return render | |
61 | 83 |
76 | 84 def run(engines): |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
85 basepath = os.path.abspath(os.path.dirname(__file__)) |
69 | 86 for engine in engines: |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
87 dirname = os.path.join(basepath, engine) |
76 | 88 print '%s:' % engine.capitalize(), |
69 | 89 t = timeit.Timer(setup='from __main__ import %s; render = %s("%s")' |
90 % (engine, engine, dirname), | |
91 stmt='render()') | |
73 | 92 print '%.2f ms' % (1000 * t.timeit(number=2000) / 2000) |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
93 |
76 | 94 |
57
300b6a3b0730
Add some simple benchmarks to compare performance against Clearsilver, Kid, Cheetah, and more soon.
cmlenz
parents:
diff
changeset
|
95 if __name__ == '__main__': |
69 | 96 engines = [arg for arg in sys.argv[1:] if arg[0] != '-'] |
76 | 97 if not engines: |
98 engines = __all__ | |
69 | 99 |
100 if '-p' in sys.argv: | |
101 import hotshot, hotshot.stats | |
102 prof = hotshot.Profile("template.prof") | |
76 | 103 benchtime = prof.runcall(run, engines) |
69 | 104 stats = hotshot.stats.load("template.prof") |
105 stats.strip_dirs() | |
106 stats.sort_stats('time', 'calls') | |
107 stats.print_stats() | |
108 else: | |
76 | 109 run(engines) |