【发布时间】:2012-01-09 06:41:43
【问题描述】:
我很想知道 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 ms per iteration 中完成,速度快了大约 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,所以这让我很满意。
【问题讨论】:
-
哦,天哪,5ms 的差异,你将如何忍受它。而且,像这样的基准测试完全没用,我会一直重复到我死的那一天。
-
尝试旧版本的 Jinja。似乎在 2.5.5 时与 Tornado 竞争
-
澄清一下;我不仅希望 Jinja2 更快,而且速度要快得多。 Jinja2 目前比 Django 慢 2%。
-
Jinja2 的字节码缓存是否默认开启? Jinja2 是如何安装的,MarkupSafe 是如何安装的?我不确定您为什么希望 Jinja2 明显更快,但如果是因为这些优化,您应该仔细检查它们。
-
叹息 :( 今天重试,我反复得到 Jinja 大约 100 毫秒,但 Django 仍然(重复)大约 275 毫秒!那是怎么回事!?!