Haml versus ERB

Hoje lendo a lista rails-br me deparei com uma colocação sobre Haml ser mais lento que HTML(entendi que a pessoa queria dizer ERB) e isso me fez relembrar que no início do Be on the net eu e o Vinícius fizemos alguns benchmarks comparando ERB e Haml.

Na época nossos benchmarks indicaram que o Haml era mais rápido que o ERB. Cabe destacar que a nossa escolha NÃO FOI por causa de performance, já que lembro bem que migramos primeiro e fizemos os testes depois. Motivado pela mensagem na lista resolvi refazer os benchmarks e mostrar os números.

Eu estava certo que o Haml se sairia melhor que o ERB mas em 5 minutos eu fiz um código para comparar os dois e descobri que o ERB se sai bem melhor.

Código utilizado

Resultado

Estava tentando me lembrar como foi feito o nosso primeiro benchmark mas não tenho a menor idéia. Não sei se fizemos algo errado ou se os valores eram diferentes naquela época.

Fiquei intrigado se com códigos mais complexos essa performance poderia ser diferente e se isso justificaria o resultado do nosso primeiro benchmark. Resolvi fazer uns testes no Be on the net e o resultado novamente foi mais favorável ao ERB.

Por se tratar de um produto comercial eu não poderia mostrar os códigos que eu utilizei. Então resolvi escrever uns exemplos mais complexos mas desisti após fazer algumas pesquisas no google e ver que outras pessoas já fizeram o mesmo teste e todos obtiveram resultados semelhantes.

Sugiro dar uma olhada nesses dois posts e ler os comentários: http://nex-3.com/posts/81-more-haml-benchmark-issues e http://nex-3.com/posts/87-haml-benchmark-numbers-for-2-2

Conclusão

O ERB é mais rápido porém esse tipo de conclusão é bastante perigosa e não devemos olhar apenas esses números para decidir sobre usar ou não o Haml. Dificilmente o gargalo da sua aplicação será apenas esse render e provavelmente você poderá resolver todos os seus problemas de performance sem a necessidade de pensar nesses números. Se você está tendo problemas com a performance da sua aplicação sugiro que assista a série Scaling Rails.

Se hoje eu tivesse que iniciar um projeto novo não pensaria duas vezes e usaria o Haml. Basicamente o Haml é menos verboso, sua sintaxe é bem amigável e ainda nos protege de cometer pequenos erros no HTML.

Publicado em 05 de Janeiro de 2010 (5 comentários)
Etiquetas haml, erb, rails, ruby, benchmark, performance