GSP x FTL (microbenchmark)

Groovy Server Pages x FreeMarker Templates. Ambas são boas ferramentas, são mantidas por equipes extremamente qualificadas e estão disponíveis para Grails (FreeMarker através dos plugins freemarker e freemarker-tags).

Conforme já mencionado anteriormente, microbenchmarks são apenas microbenchmarks. Os testes a seguir foram motivados por uma antiga discussão sobre a renderização de templates dinâmicos e pelo recente tópico sobre o desempenho de renderização de vários frameworks web.

Seguem-se os resultados obtidos, para o cenário particular do tópico em questão:

Apache HTTP server benchmarking tool (ab)

  • GSP

    Document Path: /grailsapp/products
    Document Length: 1037698 bytes

    Concurrency Level: 30
    Time taken for tests: 383.757685 seconds
    Complete requests: 3000
    Failed requests: 0
    Write errors: 0
    Total transferred: 3113592000 bytes
    HTML transferred: 3113094000 bytes
    Requests per second: 7.82 [#/sec] (mean)
    Time per request: 3837.577 [ms] (mean)
    Time per request: 127.919 [ms] (mean, across all concurrent requests)
    Transfer rate: 7923.27 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 0 1.1 0 14
    Processing: 2105 3829 380.8 3831 5122
    Waiting: 2097 3824 381.0 3825 5120
    Total: 2105 3829 380.9 3831 5122

    Percentage of the requests served within a certain time (ms)
    50% 3831
    66% 3987
    75% 4092

  • FTL

    Document Path: /grailsapp-fm/products
    Document Length: 1026697 bytes

    Concurrency Level: 30
    Time taken for tests: 103.94286 seconds
    Complete requests: 3000
    Failed requests: 0
    Write errors: 0
    Total transferred: 3080604000 bytes
    HTML transferred: 3080091000 bytes
    Requests per second: 29.10 [#/sec] (mean)
    Time per request: 1030.943 [ms] (mean)
    Time per request: 34.365 [ms] (mean, across all concurrent requests)
    Transfer rate: 29181.07 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 0 0.0 0 0
    Processing: 74 1027 646.1 962 4373
    Waiting: 71 988 643.3 915 4006
    Total: 74 1027 646.1 962 4373

    Percentage of the requests served within a certain time (ms)
    50% 962
    66% 1212
    75% 1376

JMeter

  • GSP

  • FTL

Informações relevantes:

  • As aplicações foram iniciadas usando-se ‘grails prod run-war’;
  • Para a execução do Apache benchmarking foi usado o comando ‘ab -n 3000 -c 30 URL’;
  • O arquivo de configuração do JMeter pode ser encontrado aqui;
  • Os resultados completos encontram-se aqui;
  • O desempenho de renderização dos GSPs foi melhorado na versão 1.4 de Grails: GRAILS-7582.

Projeto no github.

Referências adicionais:

11 Responses to GSP x FTL (microbenchmark)

    • 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 :-)

    • 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.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


dois × 4 =

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>