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は速度で勝負しているわけではないと思うのでこんなものかなあ。
今後手元で任意のバージョンでベンチマークが欲しくなったタイミングですぐにベンチマークを実行できるようにリポジトリを作っておきました。もしよければみなさんも手元で使ってみてください。