Marcio Trindade

Templates simples e rápidos com Slim

O Slim é uma gem desenvolvida por Andrew Stone pra criação de templates com foco na simplicidade como o HAML, mas que tem um foco mais voltado pra velocidade. A sintaxe dos dois são bem parecidas como maior diferença que no Slim você não precisa escrever o % na frente das tags, outra diferença que encontrei foi que ao meu ver o Slim está com uma organização um pouco melhor no código.

O Fred Wu escreveu um bundle para o text-mate e no embalo o "bbommarito" escreveu este bundle para o vim. O fred ainda publicou mais uma gem pra converter haml pra slim que funciona bem em muitos casos, mas ainda tem alguns problemas com certos tipos de atributos.

Na página do projeto você encontra um Benchmark comparando a performance do erb, erubis, fast erubis, slim, haml e haml ugly em 4 diferentes cituações, acho que vale a pena uma analisada.

Benchmarks
# Linux + Ruby 1.9.2, 1000 iterations

                      user     system      total        real
(1) erb           0.680000   0.000000   0.680000 (  0.810375)
(1) erubis        0.510000   0.000000   0.510000 (  0.547548)
(1) fast erubis   0.530000   0.000000   0.530000 (  0.583134)
(1) slim          4.330000   0.020000   4.350000 (  4.495633)
(1) haml          4.680000   0.020000   4.700000 (  4.747019)
(1) haml ugly     4.530000   0.020000   4.550000 (  4.592425)
(2) erb           0.240000   0.000000   0.240000 (  0.235896)
(2) erubis        0.180000   0.000000   0.180000 (  0.185349)
(2) fast erubis   0.150000   0.000000   0.150000 (  0.154970)
(2) slim          0.050000   0.000000   0.050000 (  0.046685)
(2) haml          0.490000   0.000000   0.490000 (  0.497864)
(2) haml ugly     0.420000   0.000000   0.420000 (  0.428596)
(3) erb           0.030000   0.000000   0.030000 (  0.033979)
(3) erubis        0.030000   0.000000   0.030000 (  0.030705)
(3) fast erubis   0.040000   0.000000   0.040000 (  0.035229)
(3) slim          0.040000   0.000000   0.040000 (  0.036249)
(3) haml          0.160000   0.000000   0.160000 (  0.165024)
(3) haml ugly     0.150000   0.000000   0.150000 (  0.146130)
(4) erb           0.060000   0.000000   0.060000 (  0.059847)
(4) erubis        0.040000   0.000000   0.040000 (  0.040770)
(4) slim          0.040000   0.000000   0.040000 (  0.047389)
(4) haml          0.190000   0.000000   0.190000 (  0.188837)
(4) haml ugly     0.170000   0.000000   0.170000 (  0.175378)

1. Uncached benchmark. Template is parsed every time.
   Activate this benchmark with slow=1.

2. Cached benchmark. Template is parsed before the benchmark.
   The ruby code generated by the template engine might be evaluated every time.
   This benchmark uses the standard API of the template engine.

3. Compiled benchmark. Template is parsed before the benchmark and
   generated ruby code is compiled into a method.
   This is the fastest evaluation strategy because it benchmarks
   pure execution speed of the generated ruby code.

4. Compiled Tilt benchmark. Template is compiled with Tilt, which gives a more
   accurate result of the performance in production mode in frameworks like
   Sinatra, Ramaze and Camping. (Rails still uses its own template
   compilation.)

Eu já troquei os templates deste blog de Haml pra Slim e estou bem satisfeito, por hora fica minha recomendação pra que você estude, teste e se gostar use também, afinal ter uma melhora de desempenho, mesmo que pequena, sem muito custo não faz mal pra ninguém.