gpt4 book ai didi

django - 为什么这个 Jinja2 模板渲染速度不比 Django 快?

转载 作者:行者123 更新时间:2023-12-02 00:08:47 26 4
gpt4 key购买 nike

我很好奇 Jinja2 (2.6) 比普通的 Django (1.3.1) 模板引擎快了多少。

运行它我得到:

Django: 275.729 ms per iteration
Jinja2: 281.190 ms per iteration

(越小越好)

这是 Django 基准测试:http://hastebin.com/DyGcxEybYd.py

这是 Jinja2 基准测试:http://hastebin.com/uorDENWrkM.py

作为引用,相同的 Tornado 模板测试成功地在每次迭代 28.127 毫秒内完成,速度快了大约 10 倍,这几乎好得令人难以置信。

相同的 Tornado 基准:http://hastebin.com/F9PcqGb2sZ.py

更新

不幸的是,解释是 OSX 做基准测试并不可靠。可能只是操作系统的问题,也可能是我正在运行一堆其他 GUI 应用程序,例如带有太多选项卡的浏览器。在负载非常低的 Debian 服务器上再次尝试所有这些,我得到这些数字:

(manually rounded from having run it many times over a long period)
Django: 475 ms per iteration
Jinja2: 16 ms per iteration
Tornado: 50 ms per iteration

我的工作环境是OSX,但服务器都是Linuxy,所以这让我很满意。

最佳答案

我无法重现您的结果。我使用了你的测试文件并生成了一个空白的 Django 项目

django-admin.py startproject foo && cd foo

使用 Tornado 2.1.1,每次迭代我都能获得一致的45ms。使用 Django 1.3.1,每次迭代我得到480ms

对于 Jinja2,我进行了 4 次测试。 2.5.2 和 2.6 有和没有 MarkupSafe :

2.5.2:

  • 带标记安全:19ms
  • 无:14ms

2.6:

  • w/:14ms
  • 无:15ms

令我感兴趣的是,MarkupSafe 实际上显着地减慢了 2.5.2 的速度(尽管仍然只有 5 毫秒),尽管这可能是因为我没有与 Jinja2 2.5.2 同时代的 MarkupSafe 版本。

您的测试也不使用 Jinja2 字节码缓存,这可能会显着加快速度。我不确定 Django 是否有模板代码缓存——我知道它有片段缓存,但我不确定整个事情。

<小时/>

更新:我尝试了内置的MemcachedBytecodeCache,它将 Jinja2 2.6 的速度减慢到了 22 毫秒,可能是因为在如此简单的模板上,网络事件比构建更糟糕它。使用进程内内存缓存时,时间也是相同的 14 毫秒。

关于django - 为什么这个 Jinja2 模板渲染速度不比 Django 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com