|Version 12 (modified by cmlenz, 9 years ago)|
Performance of the Markup Template Engine
The directory examples/bench has some very simple benchmarks to compare the performance of Markup to other template engines.
It should be noted that text-based template engines generally have a lot less work to do than XML-based ones, simply because their functionality is limited to processing text as opposed to processing markup.
All tests run under Python 2.4.3 on Mac OS X (MacBook 2GHz).
|Template Engine||Rendering time (less is better)||Notes|
|Markup + Speedups||3.47 ms||Experimental Markup branch that implements some core portions in C.|
|Clearsilver||0.33 ms||ClearSilver is a text-based template engine written in C.|
|Django||1.84 ms||Text-based template engine that comes with the Django framework.|
|Kid||5.66 ms||Kid templates are compiled to Python byte-code. The cElementTree implementation was used for this test, although using the Python implementation doesn't appear to make a significant difference.|
|SimpleTAL||2.07 ms||Another XML-based template engine written in Python, based on the Zope template engine (TAL). The template is a bit simpler than the other ones, due to me not being able to figure out how to do conditional attributes.|
The test template is rather simple right now and doesn't make much use of the advanced features provided by either Markup or Kid, because then it would be impossible to implement an equivalent template using other template languages.
There's another simple benchmark in the Markup repository: examples/basic. That example is however only implemented for Markup and Kid. Here are the numbers:
|Template Engine||Rendering time (less is better)|
|Markup + Speedups||3.61 ms|
I'm not quite sure why the difference between Markup and Kid is so much more drastic in this example compared to the above. It does define more (and slightly more sophisticated) match templates, which would suggest that Markup implements those more efficiently. However, that's just a theory.