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.
Terça, 05 de Janeiro de 2010, 00:58 hs
Marcos Tapajós
Além da informação valiosa, seu post me serviu como aula de como fazer benchmark.
Obrigado
Marcio
Terça, 05 de Janeiro de 2010, 02:07 hs
haml +1
Realmente o haml tem muitas vantagens sobre o erb, principalmente para os front-ends ou designers de plantão e junto com o sass se tornam ferramentas muito poderosas.
Interessante o benchmark, mas como você mesmo disse não vai ser a diferença de renderização que vai ser o gargalo da aplicação.
Não tenho a menor intenção de voltar a usar erb, depois de ter conhecido haml. :)
Terça, 05 de Janeiro de 2010, 08:11 hs
E ae Tapajós!
O ERB é mais rápido para compilar, mas em um site em produção, todos os templates são compilados apenas no primeiro acesso, logo essa diferença é irrelevante.
De qualquer modo, eu particularmente não gosto muito de haml porque acho pouco legível. Eu pretendo começar a usar essa ferramenta no lugar:
http://code.google.com/p/zen-coding/wiki/ZenHTMLSelectorsEn
Ele me dá velocidade na hora de escrever, mas no final ainda temos HTML/ERB, então eu consigo o melhor dos dois mundos.
Abraço!
Terça, 05 de Janeiro de 2010, 14:17 hs
Oi José,
Realmente essa diferença é irrelevante, por isso mesmo não acho que isso seja um problema.
Com relação ao ZenHTMLSelectorsEn achoq ue é tudo uma questão de gosto, eu achei essa sintaxe bem feia e continuo preferindo o haml!!! Gosto não se discute né?
Abração