当前位置: 首页 > 面试题库 >

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

杭志泽
2023-03-14
问题内容

Jinja2和Mako看上去都相当快。

它们与string.Template(功能不那么强大但可能对我正在做的事情足够好)相比如何?


问题答案:

这是用于渲染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

该基准基于Spitfire性能测试中的代码,并添加了一些模板引擎和迭代以提高准确性。最后的列表和生成器concat是经过手工编码的Python,以感受通过编译为Python字节码可达到的性能上限。优化版本在内部循环中使用字符串插值。

但是在用尽切换模板引擎之前,请确保它很重要。在编译模板引擎之间的差异开始变得重要之前,您需要进行一些非常繁重的缓存和真正优化的代码。对于大多数应用程序而言,良好的抽象工具,与设计工具的兼容性,熟悉程度及其他因素至关重要。



 类似资料:
  • 我是Java新手。我只做了大约一年的编程。Spring使用模板是什么意思?在Spring,有jdbc模板、jms模板等。。java中的模板类是什么?它们是一种特殊的设计模式还是什么? 提前谢谢你。

  • 问题内容: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup 我可以想到几种使用循环的方法,但是我特别想知道是否有一个整齐的单缸纸。 问题答案: 结合使用可获得不错的解决方案:

  • 我们了解cmf 之前的模板使用方式,都是由开发者通过编码来改变模板的内容,比如用户想改一个网站 logo,或者某个文字这些都要麻烦开发者! 这样事情就变的很复杂,如果你做好了一个项目客户就只想改个文字,还要打电话给你,这效率太低了,你也不好意思收钱! 运营与码农的故事 想想有没有这样一个场景 你给公司做官网,你花了一个月时间做好了,交给了运营人员,老板又安排你做其它事了. 此时官网已经上线,你也投

  • 我们了解cmf 之前的模板使用方式,都是由开发者通过编码来改变模板的内容,比如用户想改一个网站 logo,或者某个文字这些都要麻烦开发者! 这样事情就变的很复杂,如果你做好了一个项目客户就只想改个文字,还要打电话给你,这效率太低了,你也不好意思收钱! 运营与码农的故事 想想有没有这样一个场景 你给公司做官网,你花了一个月时间做好了,交给了运营人员,老板又安排你做其它事了. 此时官网已经上线,你也投

  • 请参考这篇关于我目前实践的帖子。它在一段时间内运行良好,我认为所有问题都已解决。但是,当我在不同的文件夹中构建jar时,抛出了“Template index.ftl not found”。我使用提取目标jar并找到*。模板文件夹下的ftl已压缩到该jar中。 我尝试在这里将以下配置添加到pom。xml,但它不起作用。 OP还说: 更好的是,我完全删除了配置标签,它仍然在工作。我想这是在我发现这件事

  • 问题内容: 我了解C 中模板的方面与Java和C#中的泛型不同。C#是一种形式,Java使用类型擦除,C 使用鸭子类型,等等。C 模板可以做很多事情,而Java和C#泛型则做不到(例如,模板专业化)。但是 Java泛型可以做很多事情,而C#和C ++则做不到(例如,使泛型族的有界类型参数成为现实 ),而 C#泛型可以做的很多事情Java和C 不能做(例如运行时通用反射)。 [编辑:显然Java泛型