Skip to content

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

Notifications You must be signed in to change notification settings

itsarnaud/template-engine-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Template Engine Benchmark

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.

How to use ?

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.

Current results

The tests were carried out on:

  • Node v21.7.2
  • MacBook Air M2, 15-inch with 16GB of RAM (2023)

RENDER

friends (runned 5000 times)

pug => 504ms
igodust => 603ms
eta => 610ms
handlebars => 1181ms
ejs => 3618ms
liquidjs => 14825ms

if-expression (runned 5000 times)

pug => 6ms
igodust => 7ms
liquidjs => 82ms
eta => 88ms
ejs => 130ms

projects-escaped (runned 5000 times)

handlebars => 38ms
igodust => 42ms
eta => 109ms
liquidjs => 145ms
pug => 157ms
ejs => 185ms

projects-unescaped (runned 5000 times)

igodust => 8ms
handlebars => 36ms
eta => 106ms
liquidjs => 141ms
pug => 156ms
ejs => 179ms

search-results (runned 5000 times)

igodust => 16ms
pug => 57ms
handlebars => 146ms
eta => 164ms
ejs => 585ms
liquidjs => 1328ms

simple-0 (runned 5000 times)

pug => 1ms
igodust => 5ms
liquidjs => 7ms
handlebars => 11ms
ejs => 59ms
eta => 64ms

simple-1 (runned 5000 times)

pug => 7ms
igodust => 10ms
handlebars => 19ms
eta => 88ms
liquidjs => 94ms
ejs => 166ms

simple-2 (runned 5000 times)

pug => 6ms
igodust => 9ms
handlebars => 14ms
eta => 89ms
liquidjs => 91ms
ejs => 149ms

Adding a new Template Engine

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
 └── ...

⚠️ WARNING: Asynchronous rendering methods, such as those returning Promises, are not supported by the benchmarking tool at the moment. Ensure that your rendering method is synchronous to work with the benchmarking tool effectively. ⚠️

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!

PRs are welcome 😃❤️

About

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

Topics

Resources

Stars

Watchers

Forks