This project is a benchmark designed to evaluate the performance of various JavaScript template engines. It allows developers to compare rendering performance of several popular template engines in various scenarios.
1. Clone this repo on your machine:
git clone https://github.com/itsarnaud/templating-engine-bench.git
2. Install dependencies:
npm install
3. Launch the benchmark by executing:
node main.js
4. Results:
Once the benchmark is completed, the results will be automatically updated in the readme file.
The tests were carried out on:
- Node v20.12.0
- MacBook Pro M1, 13-inch with 16GB of RAM (2020)
pug
=> 120ms
eta
=> 601ms
igodust
=> 823ms
ejs
=> 869ms
handlebars
=> 904ms
liquidjs
=> 17145ms
pug
=> 6ms
eta
=> 102ms
ejs
=> 154ms
igodust
=> 156ms
liquidjs
=> 483ms
handlebars
=> 42ms
eta
=> 126ms
igodust
=> 153ms
pug
=> 161ms
ejs
=> 212ms
liquidjs
=> 455ms
handlebars
=> 39ms
igodust
=> 119ms
eta
=> 125ms
pug
=> 154ms
ejs
=> 213ms
liquidjs
=> 455ms
pug
=> 41ms
handlebars
=> 157ms
igodust
=> 175ms
eta
=> 186ms
ejs
=> 660ms
liquidjs
=> 1996ms
pug
=> 2ms
handlebars
=> 9ms
igodust
=> 56ms
eta
=> 70ms
ejs
=> 72ms
liquidjs
=> 105ms
pug
=> 8ms
handlebars
=> 19ms
eta
=> 104ms
igodust
=> 127ms
ejs
=> 197ms
liquidjs
=> 452ms
pug
=> 7ms
handlebars
=> 16ms
eta
=> 104ms
igodust
=> 107ms
ejs
=> 179ms
liquidjs
=> 380ms
To add a new template engine to this project, follow these simple steps:
1. Create a file for the template engine:
In the engines
directory, create a new file named after your template engine, for example my-engine.js
. Take a look at the files already created for the syntax.
engines
├── igodust.js
├── my-engine.js
└── ...
2. Add test templates:
Place your template files in the templates directory, following the existing structure. Each test group should have a data file (.js or .json) and template files for each template engine you want to include in the benchmark.
templates
├── group1
│ ├── data.js (or json)
│ ├── template.dust
│ ├── template.my-engine
│ └── ...
└── ...
And that's it, all you have to do is launch the benchmark!