Comentários sobre: GSP x FTL (microbenchmark) http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/ Development Wed, 23 Oct 2013 15:30:51 +0000 hourly 1 http://wordpress.org/?v=3.4.1 Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-48 daniel Sat, 02 Jul 2011 11:05:07 +0000 http://techdm.com/grails/?p=445#comment-48 Oi Wanderson. Gosto bastante do FreeMarker. Só sugiro executar mais testes antes para saber em quais situações/tipos de página ele será mais rápido que o GSP, principalmente se você estiver usando o freemarker-tags plugin. Digo isso porque o freemarker-tags é um wrapper sobre as GSP TagLibs e, dessa maneira, é esperado que, na média, ele seja mais lento quando comparado com a utilização direta das mesmas tags. Claro que não é nada que não possa ser melhorado com o tempo. Obrigado por acompanhar o blog. []'s. Oi Wanderson.

Gosto bastante do FreeMarker. Só sugiro executar mais testes antes para saber em quais situações/tipos de página ele será mais rápido que o GSP, principalmente se você estiver usando o freemarker-tags plugin. Digo isso porque o freemarker-tags é um wrapper sobre as GSP TagLibs e, dessa maneira, é esperado que, na média, ele seja mais lento quando comparado com a utilização direta das mesmas tags. Claro que não é nada que não possa ser melhorado com o tempo.

Obrigado por acompanhar o blog.

[]‘s.

]]>
Por: Wanderson Santos http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-47 Wanderson Santos Sat, 02 Jul 2011 00:53:40 +0000 http://techdm.com/grails/?p=445#comment-47 Daniel, FreeMarker em um macro-benchmarking é melhor ainda! Veja só, sugeri a adição e olha o que aconteceu. EXCELENTE! http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ Tô muito impressionado! Muito mesmo! Gostaria de te agradecer muito pela sugestão! Sem dúvida vou me basear no FreeMarker nas próximas arquiteturas. Go Grails Go! Daniel,

FreeMarker em um macro-benchmarking é melhor ainda!

Veja só, sugeri a adição e olha o que aconteceu. EXCELENTE!

http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/

Tô muito impressionado! Muito mesmo!

Gostaria de te agradecer muito pela sugestão!

Sem dúvida vou me basear no FreeMarker nas próximas arquiteturas.

Go Grails Go!

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-33 daniel Wed, 15 Jun 2011 16:59:23 +0000 http://techdm.com/grails/?p=445#comment-33 http://grails.1312388.n4.nabble.com/ANN-FreeMarker-Tags-0-6-1-tp3599837p3599837.html http://grails.1312388.n4.nabble.com/ANN-FreeMarker-Tags-0-6-1-tp3599837p3599837.html

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-26 daniel Fri, 10 Jun 2011 23:44:15 +0000 http://techdm.com/grails/?p=445#comment-26 Só de ler alguns trechos desse artigo, já me lembrei de algo interessante que aconteceu enquanto eu reproduzia os testes do GSP x FTL: <a href="http://limcheekin.blogspot.com/2011/01/freemarker-vs-gsp-for-dynamic-template.html" rel="nofollow">Nessa postagem do Chee Kin</a>, como o teste era feito via JavaScript, o desempenho "percebido" estava mais próximo do que um usuário realmente experimentaria. Nesse caso, o limitante inferior, se o cliente e o servidor fossem o mesmo computador, seria o tempo de renderização do browser. Então, diferenças de milésimos de segundo não seriam percebidas, se o browser demorasse segundos para renderizar a página. <a href="http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/" rel="nofollow">Já nessa postagem</a>, não. Ao reproduzir os testes executados pelo autor, a minha única curiosidade era saber como os FTLs se comportariam, quando comparados aos GSPs, e qual seria a capacidade de resposta da aplicação a requisições simultâneas. Eu não tinha nenhuma pretensão maior do que essa :-) Só de ler alguns trechos desse artigo, já me lembrei de algo interessante que aconteceu enquanto eu reproduzia os testes do GSP x FTL:

Nessa postagem do Chee Kin, como o teste era feito via JavaScript, o desempenho “percebido” estava mais próximo do que um usuário realmente experimentaria. Nesse caso, o limitante inferior, se o cliente e o servidor fossem o mesmo computador, seria o tempo de renderização do browser. Então, diferenças de milésimos de segundo não seriam percebidas, se o browser demorasse segundos para renderizar a página.

Já nessa postagem, não. Ao reproduzir os testes executados pelo autor, a minha única curiosidade era saber como os FTLs se comportariam, quando comparados aos GSPs, e qual seria a capacidade de resposta da aplicação a requisições simultâneas. Eu não tinha nenhuma pretensão maior do que essa :-)

]]>
Por: Wanderson Santos http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-25 Wanderson Santos Fri, 10 Jun 2011 22:56:19 +0000 http://techdm.com/grails/?p=445#comment-25 Excelente! Ótimos argumentos! A propósito, lembrei de você ao ler o artigo abaixo - do qual não tenho grande expertise mas muito interesse. http://blog.dynatrace.com/2011/06/08/why-response-times-are-often-measured-incorrectly/ Se você pudesse postar sobre o assunto seria ótimo! ;-) Excelente! Ótimos argumentos!

A propósito, lembrei de você ao ler o artigo abaixo – do qual não tenho grande expertise mas muito interesse.

http://blog.dynatrace.com/2011/06/08/why-response-times-are-often-measured-incorrectly/

Se você pudesse postar sobre o assunto seria ótimo! ;-)

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-24 daniel Fri, 10 Jun 2011 22:33:33 +0000 http://techdm.com/grails/?p=445#comment-24 Claro que não é um exemplo significativo, mas você pode ver uma biblioteca de macros (é possível ter mais de uma macro no mesmo arquivo) e sua utilização aqui: https://github.com/daniel-lima/blogpost_files/blob/master/grailsapp-fm-1.3.7/grails-app/views/products/index.ftl https://github.com/daniel-lima/blogpost_files/blob/master/grailsapp-fm-1.3.7/grails-app/views/shared/_product.ftl Existe até a possibilidade de "auto-importar" tais bibliotecas. Dessa maneira, o '[#import "../shared/_product.ftl" as prod]' não seria mais necessário. Claro que não é um exemplo significativo, mas você pode ver uma biblioteca de macros (é possível ter mais de uma macro no mesmo arquivo) e sua utilização aqui:

https://github.com/daniel-lima/blogpost_files/blob/master/grailsapp-fm-1.3.7/grails-app/views/products/index.ftl

https://github.com/daniel-lima/blogpost_files/blob/master/grailsapp-fm-1.3.7/grails-app/views/shared/_product.ftl

Existe até a possibilidade de “auto-importar” tais bibliotecas. Dessa maneira, o ‘[#import "../shared/_product.ftl" as prod]‘ não seria mais necessário.

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-23 daniel Fri, 10 Jun 2011 22:22:11 +0000 http://techdm.com/grails/?p=445#comment-23 Eu trabalhei em uma empresa na qual as views eram feitas por designers e programadores de outras linguagens, como PHP, por exemplo. Para eles, a sintaxe usada pelos template engines (Velocity e FreeMarker) eram mais naturais que JSP e, provavelmente, que GSP. Como foi há muito tempo, não havia Grails ainda :-) Além disso, para maximizar o reuso, eles podiam escrever macros, sem precisarem programar em Java. As macros são muito poderosas porque elas se parecem com (e agem como) tags. Outro ponto interessante é essa capacidade de escaping: http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_xhtml Claro que muitas das características de FreeMarker são "pré-Groovy", então acabam sendo um maior diferencial frente ao desenvolvimento usando JSP (JEE "regular") do que frente ao desenvolvimento usando GSP (Grails). Eu trabalhei em uma empresa na qual as views eram feitas por designers e programadores de outras linguagens, como PHP, por exemplo. Para eles, a sintaxe usada pelos template engines (Velocity e FreeMarker) eram mais naturais que JSP e, provavelmente, que GSP. Como foi há muito tempo, não havia Grails ainda :-)
Além disso, para maximizar o reuso, eles podiam escrever macros, sem precisarem programar em Java. As macros são muito poderosas porque elas se parecem com (e agem como) tags.
Outro ponto interessante é essa capacidade de escaping: http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_xhtml

Claro que muitas das características de FreeMarker são “pré-Groovy”, então acabam sendo um maior diferencial frente ao desenvolvimento usando JSP (JEE “regular”) do que frente ao desenvolvimento usando GSP (Grails).

]]>
Por: Wanderson Santos http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-22 Wanderson Santos Fri, 10 Jun 2011 16:43:36 +0000 http://techdm.com/grails/?p=445#comment-22 Daniel, muito obrigado! Comentário de muito valor. IMO a grande vantagem do Grails são as taglibs, então se eu puder manter e precisar alcançar um desempenho maior em alguma situação, posso utilizar FreeMarker. Uau! Tem alguma outra vantagem a não ser preferência pela sintaxe e desempenho? Daniel, muito obrigado! Comentário de muito valor.

IMO a grande vantagem do Grails são as taglibs, então se eu puder manter e precisar alcançar um desempenho maior em alguma situação, posso utilizar FreeMarker. Uau!

Tem alguma outra vantagem a não ser preferência pela sintaxe e desempenho?

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-21 daniel Fri, 10 Jun 2011 15:16:50 +0000 http://techdm.com/grails/?p=445#comment-21 Outra vantagem do FreeMarker é a possibilidade de criação de macros: http://freemarker.sourceforge.net/docs/dgui_misc_userdefdir.html Outra vantagem do FreeMarker é a possibilidade de criação de macros: http://freemarker.sourceforge.net/docs/dgui_misc_userdefdir.html

]]>
Por: daniel http://danielhalima.com/grails/2011/06/10/gsp-x-ftl-microbenchmark/#comment-20 daniel Fri, 10 Jun 2011 14:58:58 +0000 http://techdm.com/grails/?p=445#comment-20 Meu melhor conselho seria que você testasse ambas as opções. Elas não são mutuamente exclusivas. Você pode ter páginas em .gsp e .ftl na mesma aplicação, da mesma forma que tem .jsp e .gsp. Minha escolha pessoal ainda é o FreeMarker. A atualização, após cada alteração do .ftl, é instantânea e a sintaxe é simples. Em relação às tagLibs, é aí que entra o plugin do freemarker tags: Você escreve sua Grails Dynamic TagLib da forma usual (http://grails.org/doc/latest/guide/single.html#6.3%20Tag%20Libraries) e ela fica "disponível" no seu template .ftl: [code] [#ftl /] [@g.emoticon happy="true"]Hi John[/@g.emoticon] [/code] ou [code] <#ftl /> <@g.emoticon happy="true">Hi John</@g.emoticon> [/code] As tags "core" também ficam disponíveis automaticamente. Aqui tem um exemplo de um login.gsp "convertido" para login.ftl: http://grails-freemarker-tags-plugin.googlecode.com/svn/doc/manual/guide/1.%20Introduction.html Meu melhor conselho seria que você testasse ambas as opções. Elas não são mutuamente exclusivas. Você pode ter páginas em .gsp e .ftl na mesma aplicação, da mesma forma que tem .jsp e .gsp.
Minha escolha pessoal ainda é o FreeMarker. A atualização, após cada alteração do .ftl, é instantânea e a sintaxe é simples.

Em relação às tagLibs, é aí que entra o plugin do freemarker tags: Você escreve sua Grails Dynamic TagLib da forma usual (http://grails.org/doc/latest/guide/single.html#6.3%20Tag%20Libraries) e ela fica “disponível” no seu template .ftl:

[#ftl /]
[@g.emoticon happy="true"]Hi John[/@g.emoticon]

ou

<#ftl />
<@g.emoticon happy="true">Hi John</@g.emoticon>

As tags “core” também ficam disponíveis automaticamente. Aqui tem um exemplo de um login.gsp “convertido” para login.ftl:

http://grails-freemarker-tags-plugin.googlecode.com/svn/doc/manual/guide/1.%20Introduction.html

]]>