おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Railsで使うビューテンプレートエンジンのベンチマーク2025

Railsでよく使われるテンプレートエンジンとしてerb(erubi)、haml、 slimがあります。パフォーマンスの観点だけをとりあげたとき、約5年前に パーフェクトRuby on Rails【増補改訂版】 を書いたときには、速い実装を選べば速度差は特にないという認識でした。それを裏付けるベンチマークはこちら↓。

当時のベンチマーク結果

2025年でも結果は変わらないかな?と思い新しくベンチマークを取ってみた結果が次のとおりです。M1 max MBPでベンチマークを取っています。

前提として、hamlのv6以降、hamlitがhamlになったのでhamlitは入れていません。あと個人的に注目しているPhlexを追加しています。

ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin24]
Warming up --------------------------------------
       erubi v1.13.1    50.029k i/100ms
         slim v5.2.1    39.765k i/100ms
         haml v6.3.0    47.385k i/100ms
        phlex v2.1.1    12.770k i/100ms
Calculating -------------------------------------
       erubi v1.13.1    482.580k (± 3.0%) i/s    (2.07 μs/i) -      2.451M in   5.084563s
         slim v5.2.1    388.980k (± 4.1%) i/s    (2.57 μs/i) -      1.948M in   5.018968s
         haml v6.3.0    459.842k (± 2.6%) i/s    (2.17 μs/i) -      2.322M in   5.052679s
        phlex v2.1.1    126.474k (± 1.2%) i/s    (7.91 μs/i) -    638.500k in   5.049251s

Comparison:
       erubi v1.13.1:   482580.4 i/s
         haml v6.3.0:   459841.9 i/s - same-ish: difference falls within error
         slim v5.2.1:   388980.0 i/s - 1.24x  slower
        phlex v2.1.1:   126474.0 i/s - 3.82x  slower

erubiとhamlがslimよりも少し速い、という結果になりました。phlexは速度で勝負しているわけではないと思うのでこんなものかなあ。

今後手元で任意のバージョンでベンチマークが欲しくなったタイミングですぐにベンチマークを実行できるようにリポジトリを作っておきました。もしよければみなさんも手元で使ってみてください。

willnet/template-engine-benchmarks