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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With