wheezy.template / doc / examples.rst

Full commit


Before we proceed let setup virtualenv environment:

$ virtualenv env
$ env/bin/easy_install wheezy.template

Big Table

The big table demo compares wheezy.template with other template engines in terms of how fast a table with 10 columns x 1000 rows can be generated:

    @for row in table:
        @for key, value in row.items():

Install packages used in benchmark test:

env/bin/easy_install -O2 jinja2 mako tenjin \
  tornado wheezy.html wheezy.template

Download source code and run it (Intel Core 2 Quad CPU Q6600 @ 2.40GHz × 4; Kernel Linux 3.2.0-2-686-pae; Debian Testing; Python 2.7.3):

$ env/bin/python
jinja2                         40.22ms  24.86rps
list_append                    19.85ms  50.39rps
list_extend                    18.71ms  53.46rps
mako                           36.19ms  27.63rps
tenjin                         28.97ms  34.52rps
tornado                        55.91ms  17.89rps
wheezy_template                19.99ms  50.02rps

Real World

There is real world example available in wheezy.web package. It can be found in demo.template application. The application has few screens: home, sign up, sign in, etc. The content implementation is available for jinja2, mako, tenjin, wheezy.template and wheezy.template (with preprocessor).

The throughtput was captured using apache benchmark (concurrecy level 500, number of request 100K):

                    /        /en/signin    /en/signup
jinja2              9339     6422          6196
mako                9681     6720          6567
tenjin              11138    7233          7203
wheezy.template     15023    8898          8900
wheezy.template     21144    11027         11087

Environment specification:

* Client: Intel Core 2 Quad CPU Q6600 @ 2.40GHz × 4, Kernel 3.2.0-3-686-pae
* Server: Intel Xeon CPU X3430 @ 2.40GHz x 4, Kernel 3.2.0-3-amd64, uwsgi 1.2.4
* Debian Testing, Python 2.7.3, LAN 1 Gb.