On Dec 4, 2008, at 2:11 AM, Michael Watkins wrote:

I've not had time to see what changed in Python 2.6 to produce better QPY
template performance:

m...@frog$ python2.5 bigtable.py
ElementTree                         736.43 ms
cStringIO                            36.46 ms
StringIO                            141.10 ms
list concat                          22.73 ms
QPY Template                        129.35 ms

m...@frog$ python2.6 bigtable.py
ElementTree                         656.99 ms
cStringIO                            30.85 ms
StringIO                            131.95 ms
list concat                          16.37 ms
QPY Template                         39.54 ms


Interesting... running the 3 benchmarks included with evoque also confirms a big increase in 2.6, even if maybe not as dramatic as what you observe.

In these 3 benchmarks, the "mq" means "manual quoting" -- and for this one qpy is not used at all (uses cgi.escape to do the quoting). In all cases, the bulk of evoque's work is achieved via eval(). The "nqt" means "no quoting tweaked", probably similar to your "list concat". For more details on each of these benchmark, see:
http://evoque.gizmojo.org/benchmark/

Interesting to note is that the gains seems to be consistent across the board (qpy gains are always the highest though).

Also, for the subs bench (only string substitutions) we can also compare to pystr_nq (python template.String) -- that does less than the others as it does "no quoting". Surprisingly, it seems to get slower in 2.6...


$ python2.5 bench/bigtable.py qpy evoque evoque_mq
qpy:              55.85 ms
evoque:           99.27 ms
evoque_mq:        86.29 ms
evoque_nqt:        9.13 ms

$ python2.6 bench/bigtable.py qpy evoque evoque_mq
qpy:              30.82 ms
evoque:           57.57 ms
evoque_mq:        57.13 ms
evoque_nqt:        8.18 ms


$ python2.5 bench/basic.py qpy evoque evoque_mq
qpy:               0.20 ms
evoque:            0.48 ms
evoque_mq:         0.42 ms

$ python2.6 bench/basic.py qpy evoque evoque_mq
qpy:               0.10 ms
evoque:            0.35 ms
evoque_mq:         0.32 ms


$ python2.5 bench/subs.py pystr_nq qpy evoque evoque_mq
pystr_nq:          0.05 ms
qpy:               0.05 ms
evoque:            0.05 ms
evoque_mq:         0.05 ms

$ python2.6 bench/subs.py pystr_nq qpy evoque evoque_mq
pystr_nq:          0.06 ms
qpy:               0.03 ms
evoque:            0.04 ms
evoque_mq:         0.04 ms


_______________________________________________
QP mailing list
[email protected]
http://mail.mems-exchange.org/mailman/listinfo/qp

Reply via email to