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 throu
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.
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.
(Adding this extra bit of information since this seems to be one of the first search engine hits when looking for "express jade performance")
I had the same issue with a nodejs production application. The problem is that jade runs by default on development mode which is not what you want for production, since this will recompile all templates again and again, wasting cpu and memory.
The solution is to run your app with: NODE_ENV=production node app.js
, this will prevent jade recompiling cycle, and perhaps trigger some other express perf improvements.
Note that this doesn't make jade faster, it just prevents it from doing unnecessary work and killing your CPU.