
Alvin Wang ha scritto:
Just curious. How much slower?
10 times! manlio@synapsis:~/projects/tests/django$ python static.py 33.58 usec/pass manlio@synapsis:~/projects/tests/nevow$ python static.py 344.71 usec/pass On a Dell Inspiron 6400 with an Intel Duo Core 2 7200 processor. Here is the Python code: import timeit import random from nevow import inevow, rend, loaders COLS = 5 ROWS = 20 class Main(rend.Page): docFactory = loaders.xmlfile("template.xhtml") def data_header(self, ctx, data): return range(COLS) def data_table(self, ctx, data): return [ [random.random() for j in range(COLS)] for i in range(ROWS) ] main = Main() t = timeit.Timer("main.renderSynchronously()", "from __main__ import main") print "%.2f usec/pass" % (10000 * t.timeit(number=1000) / 1000) and the template: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:n="http://nevow.com/ns/nevow/0.1" lang="en" xml:lang=""> <head> <title>Test Nevow performance</title> </head> <body> <table> <caption>RandomTable</caption> <thead> <tr n:render="sequence" n:data="header"> <th n:pattern="item" n:render="string" /> </tr> </thead> <tbody n:render="sequence" n:data="table"> <tr n:pattern="item" n:render="sequence"> <td n:pattern="item" n:render="string" /> </tr> </tbody> </table> </body> </html> Now here is the Django code: import timeit import random from twisted.python import util from django.conf import settings # Ugh! settings.configure(TEMPLATE_DIRS=[util.sibpath(__file__, '')]) from django.shortcuts import render_to_response from django.db import connection COLS = 5 ROWS = 20 def view(): header = range(COLS) table = [ [random.random() for j in range(COLS)] for i in range(ROWS) ] return render_to_response('template.xhtml', {"table": table, "header": header}) t = timeit.Timer("view()", "from __main__ import view") print "%.2f usec/pass" % (10000 * t.timeit(number=1000) / 1000) and the template: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:n="http://nevow.com/ns/nevow/0.1" lang="en" xml:lang="en"> <head> <title>Test Django performance</title> </head> <body> <table> <caption>RandomTable</caption> <thead> <tr> {% for i in header %} <th>{{ i }}</li> {% endfor %} </tr> </thead> <tbody> {% for i in table %} <tr> {% for j in i %} <td>{{ j }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table> </body> </html> Regards Manlio Perillo