什么是最快的Python模板系统?

Jinja2和Mako显然都很快。

这些如何比较(function较less,但可能足够好,我在做什么)string.Template?

以下是用于渲染10×1000 HTML表格的stream行模板引擎的结果。

Python 2.6.2 on a 3GHz Intel Core 2 Kid template 696.89 ms Kid template + cElementTree 649.88 ms Genshi template + tag builder 431.01 ms Genshi tag builder 389.39 ms Django template 352.68 ms Genshi template 266.35 ms ElementTree 180.06 ms cElementTree 107.85 ms StringIO 41.48 ms Jinja 2 36.38 ms Cheetah template 34.66 ms Mako Template 29.06 ms Spitfire template 21.80 ms Tenjin 18.39 ms Spitfire template -O1 11.86 ms cStringIO 5.80 ms Spitfire template -O3 4.91 ms Spitfire template -O2 4.82 ms generator concat 4.06 ms list concat 3.99 ms generator concat optimized 2.84 ms list concat optimized 2.62 ms 

基准是基于来自Spitfire性能testing的代码以及一些添加的模板引擎,并增加了迭代以提高准确性。 在最后的列表和生成器concat是手动编码的Python,以获得通过编译为Python字节码可实现的性能的上限。 优化版本在内部循环中使用string插值。

但是在用完之前切换模板引擎,确保它很重要。 在编译模板引擎之间的差异开始变得重要之前,你需要做一些相当沉重的caching和真正优化的代码。 对于大多数应用程序而言,良好的抽象设施,与devise工具的兼容性,熟悉程度以及其他方面的问题更为重要。

从jinja2文档看来,string.Template是最快的,如果这就是你所需要的。

毫无疑问,您应该尝试从模板中移除尽可能多的逻辑。 但没有任何逻辑的模板意味着你必须在代码中做所有的处理,这是无聊和愚蠢的。 这是一个模板引擎,它是与Python一起提供的,称为string.Template。 没有循环,如果条件,是迄今为止最快的模板引擎,你可以得到的Python。

如果你可以在caching中混合(如memcached),然后根据function和易用性来select,而不是优化。

我使用Mako是因为我喜欢语法和function。 幸运的是它也是最快的之一。

一般来说,你将不得不做分析来回答这个问题,因为这取决于你如何使用模板以及为什么。

string.Template是最快的,但如此简单,几乎不可能像其他模板系统一样被称为模板,因为它只做stringreplace,没有条件或循环,使得它在实践中是无用的。

我认为猎豹可能是最快的,因为它在C中实现