Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What steps can be taken to improve jade template rendering performance in express using nodejs

Background

jade syntax is awesome but i wanted to see how it was affecting performance.

So i created a single page app and used apache bench to compare its throughput using jade to render a page vs using an in memory string. There were no variables so this was a purely academic comparison.

The in memory string made the entire app more than twice as fast locally, which seems a lot considering jade in production mode should be rendering from an in memory cache.

I'm using node 0.8 and the version 2.5.11 of express in production mode with the view cache option explicitly set to true.

apache bench results: https://dl.dropbox.com/u/3737990/jade/jade.png https://dl.dropbox.com/u/3737990/jade/memory.png

like image 805
alzclarke Avatar asked Jul 05 '12 11:07

alzclarke


2 Answers

As mentioned by Harry, it's meaningless to compare a template engine's performance to the performance of sending a string, since those address two different needs. It's somewhat like comparing the MPG of two cars, except one car you just put into neutral and let it roll down a hill.

Instead, it is much more helpful to compare templating engines, since they are all means to the same ends (dynamically rendered HTML).

Here we see that Jade is the slowest templating language. There are probably a lot of factors that play in to why this is the case, but the core issue is that Jade wasn't designed for speed. If you need extremely high performance, doT was designed for speed.

like image 74
josh3736 Avatar answered Sep 19 '22 13:09

josh3736


An in-memory string is the absolute fastest thing you can do, so comparing against it is not very meaningful. A template is never going to be as fast as string concat. Setting to production mode is the most important thing you can do performance wise.

like image 38
Harry Avatar answered Sep 22 '22 13:09

Harry