comparison examples/bench/run.py @ 59:aa6ffd2d7274 trunk

Minor improvements to the benchmark thing.
author cmlenz
date Wed, 05 Jul 2006 07:58:36 +0000
parents 300b6a3b0730
children 448792ab1303
comparison
equal deleted inserted replaced
58:6b93567d871d 59:aa6ffd2d7274
1 from cgi import escape 1 from cgi import escape
2 from datetime import datetime, timedelta 2 from datetime import datetime, timedelta
3 import os 3 import os
4 import sys 4 import sys
5
6 def _measure_time(func, repeat=100):
7 times = []
8 for i in range(repeat):
9 start = datetime.now()
10 sys.stdout.write('.')
11 sys.stdout.flush()
12 func()
13 times.append(datetime.now() - start)
14
15 print
16 total_ms = sum([t.seconds * 1000 + t.microseconds for t in times])
17 print ' --> timing: %s (avg), %s (min), %s (max)' % (
18 timedelta(microseconds=total_ms / len(times)),
19 timedelta(microseconds=min([t.seconds * 1000 + t.microseconds for t in times])),
20 timedelta(microseconds=max([t.seconds * 1000 + t.microseconds for t in times])))
21 5
22 def markup(dirname): 6 def markup(dirname):
23 from markup.template import Context, TemplateLoader 7 from markup.template import Context, TemplateLoader
24 loader = TemplateLoader([dirname], False) 8 loader = TemplateLoader([dirname], False)
25 template = loader.load('template.html') 9 template = loader.load('template.html')
29 template.generate(ctxt).render('html') 13 template.generate(ctxt).render('html')
30 return render 14 return render
31 15
32 def cheetah(dirname): 16 def cheetah(dirname):
33 # FIXME: infinite recursion somewhere... WTF? 17 # FIXME: infinite recursion somewhere... WTF?
34 from Cheetah.Template import Template 18 try:
35 class MyTemplate(Template): 19 from Cheetah.Template import Template
36 def serverSidePath(self, path): return os.path.join(dirname, path) 20 class MyTemplate(Template):
37 filename = os.path.join(dirname, 'template.tmpl') 21 def serverSidePath(self, path): return os.path.join(dirname, path)
38 template = MyTemplate(file=filename) 22 filename = os.path.join(dirname, 'template.tmpl')
23 template = MyTemplate(file=filename)
39 24
40 def render(): 25 def render():
41 template = MyTemplate(file=filename, 26 template = MyTemplate(file=filename,
42 searchList=[{'title': 'Just a test', 27 searchList=[{'title': 'Just a test',
43 'items': [u'Number %d' % num for num in range(1, 15)]}]) 28 'items': [u'Number %d' % num for num in range(1, 15)]}])
44 template.respond() 29 template.respond()
45 return render 30 return render
31 except ImportError:
32 return None
46 33
47 def clearsilver(dirname): 34 def clearsilver(dirname):
48 import neo_cgi 35 try:
49 neo_cgi.update() 36 import neo_cgi
50 import neo_util 37 neo_cgi.update()
51 import neo_cs 38 import neo_util
52 def render(): 39 import neo_cs
53 hdf = neo_util.HDF() 40 def render():
54 hdf.setValue('hdf.loadpaths.0', dirname) 41 hdf = neo_util.HDF()
55 hdf.setValue('title', escape('Just a test')) 42 hdf.setValue('hdf.loadpaths.0', dirname)
56 for num in range(1, 15): 43 hdf.setValue('title', escape('Just a test'))
57 hdf.setValue('items.%d' % (num - 1), escape('Number %d' % num)) 44 for num in range(1, 15):
58 cs = neo_cs.CS(hdf) 45 hdf.setValue('items.%d' % (num - 1), escape('Number %d' % num))
59 cs.parseFile('template.cs') 46 cs = neo_cs.CS(hdf)
60 return render 47 cs.parseFile('template.cs')
48 cs.render()
49 return render
50 except ImportError:
51 return None
61 52
62 def kid(dirname): 53 def kid(dirname):
63 import kid 54 try:
64 kid.path = kid.TemplatePath([dirname]) 55 import kid
65 template = kid.Template(file='template.kid') 56 kid.path = kid.TemplatePath([dirname])
66 def render(): 57 template = kid.Template(file='template.kid')
67 template = kid.Template(file='template.kid', 58 def render():
68 title='Just a test', 59 template = kid.Template(file='template.kid',
69 items=['Number %d' % num for num in range(1, 15)]) 60 title='Just a test',
70 template.serialize(output='xhtml') 61 items=['Number %d' % num for num in range(1, 15)])
71 return render 62 template.serialize(output='xhtml')
63 return render
64 except ImportError:
65 return None
72 66
73 def main(): 67 def main():
74 basepath = os.path.abspath(os.path.dirname(__file__)) 68 basepath = os.path.abspath(os.path.dirname(__file__))
75 for engine in ('markup', 'clearsilver', 'kid'): 69 for engine in ('markup', 'clearsilver', 'kid'):
76 dirname = os.path.join(basepath, engine) 70 dirname = os.path.join(basepath, engine)
77 print '%s:' % engine.capitalize() 71 print '%s:' % engine.capitalize()
78 func = globals()[engine](dirname) 72 func = globals()[engine](dirname)
79 _measure_time(func) 73 if not func:
74 print 'Skipping %s, not installed?' % engine.capitalize()
75 continue
76 times = []
77 for i in range(100):
78 start = datetime.now()
79 sys.stdout.write('.')
80 sys.stdout.flush()
81 func()
82 times.append(datetime.now() - start)
83
84 print
85 total_ms = sum([t.seconds * 1000 + t.microseconds for t in times])
86 print ' --> timing: %s (avg), %s (min), %s (max)' % (
87 timedelta(microseconds=total_ms / len(times)),
88 timedelta(microseconds=min([t.seconds * 1000 + t.microseconds for t in times])),
89 timedelta(microseconds=max([t.seconds * 1000 + t.microseconds for t in times])))
80 print 90 print
81 91
82 if __name__ == '__main__': 92 if __name__ == '__main__':
83 main() 93 main()
Copyright (C) 2012-2017 Edgewall Software