Jinja2和Mako显然都很快。
这些如何比较(功能较少但可能对我正在做的事情足够好)string.Template?
答案 0 :(得分:99)
以下是用于呈现10x1000 HTML表格的流行模板引擎的结果。
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
基准测试基于code from Spitfire performance tests,添加了一些模板引擎并添加了迭代次数以提高准确性。最后的列表和生成器concat是手工编写的Python,通过编译Python字节码来了解可实现的性能上限。优化版本在内循环中使用字符串插值。
但在您用完切换模板引擎之前,请确保它很重要。在编译模板引擎之间的差异开始变得重要之前,您需要做一些非常繁重的缓存并真正优化代码。对于大多数应用程序而言,良好的抽象设施,与设计工具的兼容性,熟悉度和其他重要性更重要。
答案 1 :(得分:10)
从jinja2 docs开始,如果你需要的话,似乎string.Template是最快的。
毫无疑问,你应该尝试 从模板中删除尽可能多的逻辑 可能。但模板没有任何 逻辑意味着你必须做所有的事情 处理代码很无聊 和愚蠢的。一个模板引擎 这是用Python和 叫做string.Template。没有 循环,如果条件和目前为止 你可以使用最快的模板引擎 得到Python。
答案 2 :(得分:3)
如果你可以在混合中抛出缓存(比如memcached),那么选择基于功能和易用性而不是优化。
我使用Mako因为我喜欢语法和功能。幸运的是,它也是最快的之一。
答案 3 :(得分:1)
一般情况下,您必须进行性能分析才能回答该问题,因为这取决于您使用模板的方式和用途。
string.Template是最快的,但是如此原始,它几乎不能像其他模板系统一样被称为模板,因为它只进行字符串替换,并且没有条件或循环,使得它在实践中毫无用处
答案 4 :(得分:-3)
我认为猎豹可能是最快的,因为它是用C实现的。