expressで使えるテンプレートエンジンのベンチマークをとってみた
テンプレートエンジンの比較をあまり見かけたことがなかったので
ベンチマークとってみました。
Node.jsのbenchmarkライブラリ使っても良かったんですが、
express使わない場合とも比較してみたかったので
普通にapache benchを使っています。
ちなみに今回はこちらのリストからexpress標準で使えるものを対象にしました*1
Express バージョン
2.5.8
abパラメータ
ab -c 10 -n 5000 http://127.0.0.1:3000/
結果:Lite
HTTPエンジン | テンプレートエンジン | rps |
---|---|---|
simple_server | - | 4580.91 |
express | - | 3874.71 |
express | jade | 1565.11 |
express | ejs | 1985.28 |
express | haml | 1812.10 |
express | jqtpl | 1971.07 |
express | jst | 2062.04 |
express | whiskers | 2034.63 |
express | thunder | 2044.22 |
結果:Lite(FULL)
https://gist.github.com/2853822
テンプレート使う/使わないで結構違いますね。
生で使う場合にはエスケープなど頑張る必要がありますが、
パフォーマンスが欲しい時には生でやるのもありかと。
テンプレート別についてはそんなに大きな違いはないようです。
デフォルトの挙動や機能の違いなどは考慮していないので
今回の結果はあくまでおおざっぱな目安として見るのがいいかもしれませんね。
※2012/6/2 Heavy(10Kbyte)追加
結果:Heavy
HTTPエンジン | テンプレートエンジン | rps |
---|---|---|
simple_server | - | 3642.35 |
express | - | 2790.62 |
express | jade | 974.95 |
express | ejs | 345.64 |
express | haml | 1183.48 |
express | jqtpl | 1219.87 |
express | jst | 1529.26 |
express | whiskers | 1214.09 |
express | thunder | 1199.63 |
結果のHTMLを少し大きくしてみました。
軒並みベンチマークが落ちますが
とりわけejsが落ちてますね。なんでだろ。
このベンチマークだけ見るとjstが速いっぽいが…
*1:たぶんexpress互換でなくてもすこし手を加えれば動くと思いますが、今回は除外