107 lines
4.8 KiB
Markdown
107 lines
4.8 KiB
Markdown
# Template Engine Performance Comparison
|
|
#### Ruby implementations.
|
|
|
|
## Competitors
|
|
- [Builder](https://github.com/jimweirich/builder)
|
|
- [ERB](http://ruby-doc.org/stdlib-2.0.0/libdoc/erb/rdoc/ERB.html)
|
|
- [Erubis](http://www.kuwata-lab.com/erubis/)
|
|
- [Haml](http://haml.info/)
|
|
- [Handlebars](https://github.com/cowboyd/handlebars.rb) (JS bingings)
|
|
- [Liquid](http://liquidmarkup.org/)
|
|
- [Markaby](http://markaby.github.io/)
|
|
- [Mustache](https://github.com/defunkt/mustache)
|
|
- [Slim](http://slim-lang.com/)
|
|
- [Tagz](https://github.com/ahoward/tagz)
|
|
- [Tenjin](http://www.kuwata-lab.com/tenjin/)
|
|
|
|
... and our special guest ...
|
|
|
|
- [String interpolation](http://en.wikipedia.org/wiki/String_interpolation#Ruby)
|
|
|
|
## Running
|
|
```bash
|
|
# Prepare workspace
|
|
git clone git@github.com:localhots/template_engine_comparison.git
|
|
cd template_engine_comparison
|
|
bundle install
|
|
|
|
# Generate data for templates
|
|
./fakedata.rb 1000 > data/big.yml
|
|
|
|
# Run benchmarks
|
|
./benchmark.rb
|
|
```
|
|
|
|
## Current Results
|
|
**Intel Core i7 2.6 GHz**
|
|
|
|
```
|
|
############################################################
|
|
## Compilation (small template) - 1.000 runs ##
|
|
############################################################
|
|
user system total real
|
|
builder 0.040000 0.010000 0.050000 ( 0.051603)
|
|
erb 0.240000 0.020000 0.260000 ( 0.252003)
|
|
erubis 0.060000 0.020000 0.080000 ( 0.082601)
|
|
haml 0.850000 0.030000 0.880000 ( 0.880267)
|
|
handlebars 0.100000 0.030000 0.130000 ( 0.124923)
|
|
liquid 0.050000 0.020000 0.070000 ( 0.074742)
|
|
markaby 0.020000 0.010000 0.030000 ( 0.040555)
|
|
mustache 0.020000 0.020000 0.040000 ( 0.028828)
|
|
slim 1.980000 0.050000 2.030000 ( 2.038820)
|
|
string 0.030000 0.020000 0.050000 ( 0.045661)
|
|
tagz 0.010000 0.000000 0.010000 ( 0.017564)
|
|
tenjin 0.010000 0.010000 0.020000 ( 0.015479)
|
|
|
|
############################################################
|
|
## Render (small template) - 10.000 runs ##
|
|
############################################################
|
|
user system total real
|
|
builder 1.890000 0.000000 1.890000 ( 1.893341)
|
|
erb 0.110000 0.000000 0.110000 ( 0.109126)
|
|
erubis 0.080000 0.000000 0.080000 ( 0.078112)
|
|
haml 0.210000 0.010000 0.220000 ( 0.212483)
|
|
handlebars 0.690000 0.040000 0.730000 ( 0.701104)
|
|
liquid 0.350000 0.000000 0.350000 ( 0.353939)
|
|
markaby 2.450000 0.070000 2.520000 ( 2.518086)
|
|
mustache 2.510000 0.060000 2.570000 ( 2.569790)
|
|
slim 0.210000 0.010000 0.220000 ( 0.213641)
|
|
string 0.090000 0.000000 0.090000 ( 0.091101)
|
|
tagz 1.010000 0.020000 1.030000 ( 1.035361)
|
|
tenjin 0.110000 0.000000 0.110000 ( 0.112881)
|
|
|
|
############################################################
|
|
## Compilation (big template) - 1.000 runs ##
|
|
############################################################
|
|
user system total real
|
|
builder 0.020000 0.020000 0.040000 ( 0.043931)
|
|
erb 0.280000 0.020000 0.300000 ( 0.302882)
|
|
erubis 0.110000 0.020000 0.130000 ( 0.135634)
|
|
haml 1.140000 0.030000 1.170000 ( 1.171942)
|
|
handlebars 0.100000 0.030000 0.130000 ( 0.118258)
|
|
liquid 0.110000 0.020000 0.130000 ( 0.130391)
|
|
markaby 0.020000 0.010000 0.030000 ( 0.042543)
|
|
mustache 0.020000 0.020000 0.040000 ( 0.035402)
|
|
slim 2.400000 0.040000 2.440000 ( 2.440354)
|
|
string 0.030000 0.020000 0.050000 ( 0.044737)
|
|
tagz 0.010000 0.010000 0.020000 ( 0.017057)
|
|
tenjin 0.010000 0.000000 0.010000 ( 0.015773)
|
|
|
|
############################################################
|
|
## Render (big template, 150KB data) - 50 runs ##
|
|
############################################################
|
|
user system total real
|
|
builder 9.270000 0.030000 9.300000 ( 9.289956)
|
|
erb 0.310000 0.000000 0.310000 ( 0.313369)
|
|
erubis 0.200000 0.010000 0.210000 ( 0.214869)
|
|
haml 0.490000 0.010000 0.500000 ( 0.495157)
|
|
handlebars 5.170000 0.060000 5.230000 ( 5.221436)
|
|
liquid 5.770000 0.050000 5.820000 ( 5.836171)
|
|
markaby 6.280000 0.020000 6.300000 ( 6.303951)
|
|
mustache 2.160000 0.000000 2.160000 ( 2.164364)
|
|
slim 0.700000 0.010000 0.710000 ( 0.702391)
|
|
string 0.350000 0.020000 0.370000 ( 0.370049)
|
|
tagz 10.670000 0.190000 10.860000 ( 10.868873)
|
|
tenjin 0.240000 0.010000 0.250000 ( 0.255957)
|
|
```
|