Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/itsarnaud/template-engine-bench
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
https://github.com/itsarnaud/template-engine-bench
benchmark ejs eta handlebars igodust js liquid pug template-engine
Last synced: about 2 months ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/itsarnaud/template-engine-bench
- Owner: itsarnaud
- Created: 2024-04-15T15:52:06.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-09-10T11:54:00.000Z (4 months ago)
- Last Synced: 2024-10-31T10:51:38.555Z (about 2 months ago)
- Topics: benchmark, ejs, eta, handlebars, igodust, js, liquid, pug, template-engine
- Language: JavaScript
- Homepage:
- Size: 204 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# 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:**
```bash
git clone https://github.com/itsarnaud/templating-engine-bench.git
```**2. Install dependencies:**
```bash
npm install
```**3. Launch the benchmark by executing:**
```bash
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 😃❤️