Teste Micro Frameworks PHP - Flight PHP, Lumen, Slim 3 e Laravel

Felipo Antonoff
Postado em 29 de maio de 2016

Nesse artigo iremos analisar três Micro Frameworks PHP, sendo eles o Flight PHP, Lumen e Slim 3 e também para comparação colocamos no teste o Laravel que é um dos Full Stack Framework mais famosos e popular no mundo todo, inclusive um dos mais usados no Brasil.

Espero com esse artigo e vídeos, lhe ajudar na escolha do seu Framework PHP e ensinar rapidamente um pouco sobre teste de desempenho.

Caso queira aprender a usar o Apache AB ApacheBench para testes, veja aqui o artigo que fizemos.

Um pouco sobre os Frameworks e que pontos analisar em uma escolha no geral

Vídeo do teste para 10 acessos simultâneos e rodando por 10 segundos. 

No teste, usamos a ferramenta AB ApacheBench e para o gráfico o Gnuplot, o comando usado vai ser o:ab -t 10 -c 10 -k -g arquivo.tsv endereco/

Nos testes que fizemos, o Flight PHP foi o superior e também é o mais leve.O Lumen e Slim são muito próximos, fica variando um pouco entre eles e usam a mesma biblioteca para a rota, no caso é a Fast Route - https://github.com/nikic/FastRoute .Como previsto o Laravel foi inferior a todos do teste, porém ele é para outra categoria de Framework e já era previsto isso. No gráfico não incluímos ele, apenas no vídeo.

Gráfico criado pelo Gnuplot

Obs:Quanto menor o tempo de resposta melhorQuanto maior o número de Requisições melhor

Vídeo testando 100 requisições simultâneas, um teste um pouco mais extremo, nesse não testamos o Laravel, pois ele não suportaria muito bem

No teste, usamos a ferramenta AB ApacheBench e para o gráfico o Gnuplot, o comando usado vai ser o:ab -t 10 -c 100 -k -g arquivo.tsv endereco/

Gráfico criado pelo Gnuplot

Obs:Quanto menor o tempo de resposta melhorQuanto maior o número de Requisições melhor

Vídeo testando o tempo que levam para chegar até 1000 requisições

No teste, usamos a ferramenta AB ApacheBench e para o gráfico o Gnuplot, o comando usado vai ser o:ab -n 1000 -c 10 -k -g arquivo.tsv endereco/

Gráfico criado pelo Gnuplot

Obs:Quanto menor o tempo de resposta melhor
Conclusão

Para uso em API ou sistemas web que exigem um bom desempenho e estabilidade até mesmo para muitas requisições, indicaria o uso do Flight PHP, por ser o mais estável nos testes.Porém os três atendem a maioria dos casos muito bem, só para serviços mais extremos mesmo que tem que ser analisado melhor qual usar.Já o Laravel como previsto, se comporta pior que eles, até por ter já várias bibliotecas inclusas e mais recursos, sendo indicado para iniciantes ou desenvolvedores que gostam de ter uma estrutura já montada e com as bibliotecas necessárias para a maioria dos projetos. Logo eu recomendaria, para sistemas webs que não necessitam de desempenho extremo, como CMS, E-commerce (alguns casos pode precisar otimizar) e sistemas com um pico de acesso simultâneo por segundos, não tão alto, na maioria dos projetos ele vai atender muito bem.Já se você gosta de usar bibliotecas externas, pesquisar por exemplo qual biblioteca para validação, cache, ORM, imagens e outras e usar a que achar melhor com base na sua busca, gosta de criar suas bibliotecas e também gosta de montar a estrutura do sue app, recomendo Micro Frameworks, até por ter um desempenho melhor e por ter só o básico para criação de um app web. 

Esse site mesmo, foi feito usando o Flight PHP e algumas bibliotecas para o Banco de dados, imagens, validação e outras criadas a parte ou baseadas no excelente core do Opencart, que internamente tem um Framework também muito bom e MVC.

Os resultados foram baseado em uma máquina Vagrant de teste, rodando Nginx e PHP FPM, usando outra máquina e configuração, terá resultados diferentes, sendo apenas para efeito de comparação entre os Frameworks e não o desempenho máximo ou mínimo dos Frameworks, todos dependendo da máquina e otimização da infra, terão resultados muito superiores, como os que o Taylor Otwell teve em sua simulação, veja aqui.E também está relacionado a versão do PHP, no teste foi usado o 5.6, o 7 por exemplo teria um desempenho superior.