# HG changeset patch # User cmlenz # Date 1152086316 0 # Node ID aa6ffd2d7274ce5a59e72d64995c113c70c543e0 # Parent 6b93567d871df721a2d598345c854b4e4b6b5734 Minor improvements to the benchmark thing. diff --git a/examples/bench/kid/header.kid b/examples/bench/kid/header.kid deleted file mode 100644 --- a/examples/bench/kid/header.kid +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/examples/bench/run.py b/examples/bench/run.py --- a/examples/bench/run.py +++ b/examples/bench/run.py @@ -3,22 +3,6 @@ import os import sys -def _measure_time(func, repeat=100): - times = [] - for i in range(repeat): - start = datetime.now() - sys.stdout.write('.') - sys.stdout.flush() - func() - times.append(datetime.now() - start) - - print - total_ms = sum([t.seconds * 1000 + t.microseconds for t in times]) - print ' --> timing: %s (avg), %s (min), %s (max)' % ( - timedelta(microseconds=total_ms / len(times)), - timedelta(microseconds=min([t.seconds * 1000 + t.microseconds for t in times])), - timedelta(microseconds=max([t.seconds * 1000 + t.microseconds for t in times]))) - def markup(dirname): from markup.template import Context, TemplateLoader loader = TemplateLoader([dirname], False) @@ -31,44 +15,54 @@ def cheetah(dirname): # FIXME: infinite recursion somewhere... WTF? - from Cheetah.Template import Template - class MyTemplate(Template): - def serverSidePath(self, path): return os.path.join(dirname, path) - filename = os.path.join(dirname, 'template.tmpl') - template = MyTemplate(file=filename) + try: + from Cheetah.Template import Template + class MyTemplate(Template): + def serverSidePath(self, path): return os.path.join(dirname, path) + filename = os.path.join(dirname, 'template.tmpl') + template = MyTemplate(file=filename) - def render(): - template = MyTemplate(file=filename, - searchList=[{'title': 'Just a test', - 'items': [u'Number %d' % num for num in range(1, 15)]}]) - template.respond() - return render + def render(): + template = MyTemplate(file=filename, + searchList=[{'title': 'Just a test', + 'items': [u'Number %d' % num for num in range(1, 15)]}]) + template.respond() + return render + except ImportError: + return None def clearsilver(dirname): - import neo_cgi - neo_cgi.update() - import neo_util - import neo_cs - def render(): - hdf = neo_util.HDF() - hdf.setValue('hdf.loadpaths.0', dirname) - hdf.setValue('title', escape('Just a test')) - for num in range(1, 15): - hdf.setValue('items.%d' % (num - 1), escape('Number %d' % num)) - cs = neo_cs.CS(hdf) - cs.parseFile('template.cs') - return render + try: + import neo_cgi + neo_cgi.update() + import neo_util + import neo_cs + def render(): + hdf = neo_util.HDF() + hdf.setValue('hdf.loadpaths.0', dirname) + hdf.setValue('title', escape('Just a test')) + for num in range(1, 15): + hdf.setValue('items.%d' % (num - 1), escape('Number %d' % num)) + cs = neo_cs.CS(hdf) + cs.parseFile('template.cs') + cs.render() + return render + except ImportError: + return None def kid(dirname): - import kid - kid.path = kid.TemplatePath([dirname]) - template = kid.Template(file='template.kid') - def render(): - template = kid.Template(file='template.kid', - title='Just a test', - items=['Number %d' % num for num in range(1, 15)]) - template.serialize(output='xhtml') - return render + try: + import kid + kid.path = kid.TemplatePath([dirname]) + template = kid.Template(file='template.kid') + def render(): + template = kid.Template(file='template.kid', + title='Just a test', + items=['Number %d' % num for num in range(1, 15)]) + template.serialize(output='xhtml') + return render + except ImportError: + return None def main(): basepath = os.path.abspath(os.path.dirname(__file__)) @@ -76,7 +70,23 @@ dirname = os.path.join(basepath, engine) print '%s:' % engine.capitalize() func = globals()[engine](dirname) - _measure_time(func) + if not func: + print 'Skipping %s, not installed?' % engine.capitalize() + continue + times = [] + for i in range(100): + start = datetime.now() + sys.stdout.write('.') + sys.stdout.flush() + func() + times.append(datetime.now() - start) + + print + total_ms = sum([t.seconds * 1000 + t.microseconds for t in times]) + print ' --> timing: %s (avg), %s (min), %s (max)' % ( + timedelta(microseconds=total_ms / len(times)), + timedelta(microseconds=min([t.seconds * 1000 + t.microseconds for t in times])), + timedelta(microseconds=max([t.seconds * 1000 + t.microseconds for t in times]))) print if __name__ == '__main__':