Some AppEngine Templates Benchmark Icing.

13 Sep 2010

I could’t hang up the call after the last 4 benchmarks (1, 2, 3, 4), but no, I am not back to add Django and Kay to the benchmarks… I was asked to include them and I should have done better than ditching them, seriously, I am sorry to all of those who would have liked them compared with the bunch included over here. Both are impeccable, well oiled, all-in-one monolithic frameworks, but far from what I am looking for: fast, elegant and modular web applications components. Besides, I would have liked to include them anyway, but their well planned nature makes them a bit uneasy to mount beside others apps inside a single AppEngine instance.

So, what I did instead, is welcome smaller request handlers, keeping the same templating engines in the front end. Now included is a very minimal bare metal WSGI handler implementation, as well as webob and a re-implementation of webapp in webapp2. I also took time to implement a variation on Tenjin, with a memcached cache combined.

The best part is that it didn’t turned out as expected, WSGI should have logically performed the best, but it didn’t! Maybe I did a bad implementation? Or could there be an unseen flaw in the benchmark? If you’d like, you can review the code in the benchmark’s repository on Github. Anyway, Here are the new compiled results, as always, take them with a grain of salt.

Straight away, you may notice that the overall classification order is not entirely coherent with the previous benchmarks run, but the Framework and Templating Engine comparisons stays in line with the previous ordering. I would really like to know why WSGI scores so badly… the problem must be in my implementation, because its technology is the foundation for all the others. What did I do to make it that bad? What about Tenjin with cache? This one is explicable… the benchmark is built to engender the more possible unique queries, so that is why the caching suffer and becomes more of a wasted cycle than a clever speed trick.