changeset 487:bd00120ea90a trunk

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 fb66fb3e4b49
children 9d69724a5bf3
files examples/bench/basic.py examples/bench/bigtable.py
diffstat 2 files changed, 41 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/examples/bench/basic.py
+++ b/examples/bench/basic.py
@@ -1,3 +1,8 @@
+# -*- encoding: utf-8 -*-
+# Template language benchmarks
+#
+# Objective: Test general templating features using a small template
+
 from cgi import escape
 import os
 from StringIO import StringIO
@@ -20,7 +25,11 @@
     return render
 
 def myghty(dirname, verbose=False):
-    from myghty import interp
+    try:
+        from myghty import interp
+    except ImportError:
+        print>>sys.stderr, 'Mighty not installed, skipping'
+        return lambda: None
     interpreter = interp.Interpreter(component_root=dirname)
     def render():
         data = dict(title='Just a test', user='joe',
@@ -34,7 +43,11 @@
 
 def cheetah(dirname, verbose=False):
     # FIXME: infinite recursion somewhere... WTF?
-    from Cheetah.Template import Template
+    try:
+        from Cheetah.Template import Template
+    except ImportError:
+        print>>sys.stderr, 'Cheetah not installed, skipping'
+        return lambda: None
     class MyTemplate(Template):
         def serverSidePath(self, path): return os.path.join(dirname, path)
     filename = os.path.join(dirname, 'template.tmpl')
@@ -54,7 +67,8 @@
     try:
         import neo_cgi
     except ImportError:
-        return lambda:None
+        print>>sys.stderr, 'ClearSilver not installed, skipping'
+        return lambda: None
     neo_cgi.update()
     import neo_util
     import neo_cs
@@ -74,8 +88,12 @@
     return render
 
 def django(dirname, verbose=False):
-    from django.conf import settings
-    settings.configure(TEMPLATE_DIRS=[os.path.join(dirname, 'templates')])
+    try:
+        from django.conf import settings
+        settings.configure(TEMPLATE_DIRS=[os.path.join(dirname, 'templates')])
+    except ImportError:
+        print>>sys.stderr, 'Django not installed, skipping'
+        return lambda: None
     from django import template, templatetags
     from django.template import loader
     templatetags.__path__.append(os.path.join(dirname, 'templatetags'))
@@ -91,32 +109,29 @@
     return render
 
 def kid(dirname, verbose=False):
-    import kid
+    try:
+        import kid
+    except ImportError:
+        print>>sys.stderr, "SimpleTAL not installed, skipping"
+        return lambda: None
     kid.path = kid.TemplatePath([dirname])
-    template = kid.Template(file='template.kid')
+    template = kid.load_template('template.kid').Template
     def render():
-        template = kid.Template(file='template.kid',
-                                title='Just a test', user='joe',
-                                items=['Number %d' % num for num in range(1, 15)])
-        return template.serialize(output='xhtml')
-
-    if verbose:
-        print render()
-    return render
-
-def nevow(dirname, verbose=False):
-    # FIXME: can't figure out the API
-    from nevow.loaders import xmlfile
-    template = xmlfile('template.xml', templateDir=dirname).load()
-    def render():
-        print template
+        return template(
+            title='Just a test', user='joe',
+            items=['Number %d' % num for num in range(1, 15)]
+        ).serialize(output='xhtml')
 
     if verbose:
         print render()
     return render
 
 def simpletal(dirname, verbose=False):
-    from simpletal import simpleTAL, simpleTALES
+    try:
+        from simpletal import simpleTAL, simpleTALES
+    except ImportError:
+        print>>sys.stderr, "SimpleTAL not installed, skipping"
+        return lambda: None
     fileobj = open(os.path.join(dirname, 'base.html'))
     base = simpleTAL.compileHTMLTemplate(fileobj)
     fileobj.close()
--- a/examples/bench/bigtable.py
+++ b/examples/bench/bigtable.py
@@ -134,7 +134,6 @@
         kid_tmpl.table = table
         kid_tmpl.serialize(output='html')
 
-
     if cet:
         def test_kid_et():
             """Kid template + cElementTree"""
@@ -186,9 +185,9 @@
 
 
 def run(which=None, number=10):
-    tests = ['test_builder', 'test_genshi', 'test_genshi_builder', 'test_myghty', 'test_kid',
-             'test_kid_et', 'test_et', 'test_cet', 'test_clearsilver',
-             'test_django']
+    tests = ['test_builder', 'test_genshi', 'test_genshi_builder',
+             'test_myghty', 'test_kid', 'test_kid_et', 'test_et', 'test_cet',
+             'test_clearsilver', 'test_django']
 
     if which:
         tests = filter(lambda n: n[5:] in which, tests)
Copyright (C) 2012-2017 Edgewall Software