Pessoal, como presente de natal tivemos a chegada da release 1.2 tão esperada por muitos do CakePHP.
Os detalhes podem ser vistos em http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final.
Abraços e bons projetos a todos.
Pessoal, como presente de natal tivemos a chegada da release 1.2 tão esperada por muitos do CakePHP.
Os detalhes podem ser vistos em http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final.
Abraços e bons projetos a todos.
Pessoal,
Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: CakePHP, Code Igniter, Symfony, Yii e Zend Framework.
Todos os benchmarks que eu vejo pela internet são de um simples hello world, que às vezes não utilizam o framework como indicado e acaba desvirtuando um pouco. Além disso, muitos testam somente a versão estável, deixando pra lá algumas versões mais “quentes”, como no caso do CakePHP 1.2. Então resolvi mudar! Fiz um teste com o famoso Hello World, e outros dois: um acessando o banco de dados e lendo 10 registros e o mesmo código lendo 1000 registros. Assim, aproxima um pouco da realidade do desenvolvimento, pois não desenvolvemos Hello Worlds, mas sim acesso a banco, uso de MVC (completo e não como os exemplos que não há view!). Não testei as funcionalidades em si de cada framework como cache, ACL, componentes, etc, detive-me ao básico, acessar o banco e mostrar um dos campos.
Bem, vamos começar falando da máquina de testes. Estava rodando num Debian Etch, com processador Intel Xeon 2.66GHz, 256MB de RAM. Esta máquina é um servidor de produção que é vendido pela VirtuaServer. Ou seja, tentei fazer o teste num servidor que usamos na prática e não numa máquina local de qualquer desenvolvedor. Nesta máquina a versão do Apache é a 2.2.3, PHP 5.2.0 e MySQL 5.0.32. Nenhuma extensão de cache/performance (APC, Memcache, etc) está habilitada.
O desenvolvimento da aplicação eu fiz me baseando na documentação de cada framework e não a partir de exemplos prontos, pois queria fazer seguindo a lógica dos desenvolvedores de cada framework. Tentei deixar o mais próximo do modo de produção (desabilitando debugs, etc).
Vamos aos resultados, começando pelo famoso Hello World:
O eixo Y representa o número de requisições completadas após 30 segundos de testes. Usei a ferramenta “ab” para fazer os testes (parâmetros: -t 30 -c 10 ou -c 100. Isso significa que testei cada framework por 30 segundos, com 10 ou 100 requisições em paralelo).
Como podem ver, Yii e CodeIgniter apresentaram excelentes resultados, enquanto os demais ficaram próximos. Alguns poderiam dizer que o CakePHP apresenta resultados inferiores por manter suporte ao PHP4, o que limita algumas coisas, mas lembro que o CodeIgniter também suporta o PHP4 e apresentou resultados surpreendentes.
PS: Fiz as aplicações antes de iniciar todos os testes, ou seja, a parte de banco de dados já estava configurada até para fazer o Hello World, então caberia a aplicação conectar/carregar “drivers” ou não…
Ok, agora vamos aos resultados dos testes dos frameworks acessando a base de dados e mostrando 10 registros:
Novamente Yii e CodeIgniter se sobressaindo… Porém, vejam que o CakePHP estável (1.1) obteve melhores resultados que o CakePHP 1.2 e mais, o CakePHP 1.2 obteve o pior resultados dos pesquisados.
Outra coisa interessante que podemos notar é que o CodeIgniter tem uma performance melhor com mais requisições em paralelo, sendo mais interessante para sites de grande porte, como portais que tem bastante acesso.
E agora o último teste: acesso ao banco com 1000 registros. A idéia deste teste é tentar visualizar se o framework tem um overhead grande por causa de registros ou por causa da pesquisa. Se pensarmos, a pesquisa é a mesma, a quantidade de registros retornados é que mudará, então é neste ponto que vamos notar as diferenças.
CodeIgniter novamente se destacando e ainda deixando o Yii mais distante que nos demais testes. Nota-se também que todos têm um overhead grande sobre os registros retornados no banco, pois diminuíram muito sua performance. O CakePHP 1.2 reduziu pouco, o que é interessante.
Vale ressaltar que o teste com 1000 registros não é tão usado na prática, pois uma página com 1000 registros pro usuário ler é um tanto quanto chato. Normalmente nestes casos há paginação. Exemplos práticos que vejo disto é na geração de relatório ou gráficos, mas que são pontos isolados e não tão usuais.
Alguns comentários sobre os desenvolvimentos das aplicações de teste:
Minhas opiniões quanto os resultados:
Bem, acho que é isso. Não vou largar do CakePHP, mas não custa dar uma estudada mais a fundo nos outros.
Caso alguém tenha alguma sugestão de testes a fazer, comente! Pois vou deixar minha suite de testes montada para quando sair novas versões fazer a comparação.
Caso queiram ver os testes mais detalhados, podem acessar os últimos resultados dos testes. Neste site também está disponível o resultado mais detalhado de cada teste, inclusive os números.
Abraços.
Depois de anunciada a nova versão, vamos as principais mudanças:
Boa sorte na migração.
Vou descrever aqui como usar o SWFUpload com CakePHP 1.2. Para facilitar, fiz um zip com todos arquivos necessários. Você pode baixá-lo aqui.
Neste arquivo, existe os arquivos de terceiros (pasta vendors) e na pasta app existem os arquivos necessários para sua aplicação.
Note que na pasta config, há o arquivo bootstrap.php. Nele eu só coloquei as configurações de pasta. Caso sua aplicação use mais alguma outra coisa no bootstrap, não esqueça de fazer um merge.
Na pasta webroot, o arquivo JS é o responsável pelas ações (cancelar, envio OK, envio NOK, etc), então dependendo da sua aplicação vai ser preciso alterá-lo. O CSS é a mesma coisa…
Acho que era isso. Caso tenham alguma dúvida, não exitem em perguntar. Abraços e boa sorte a todos.
Ontem foi lançada a versão candidata a release número 4. As principais modificações em relação ao RC3 são os massivos testes automatizados, aumentando ainda mais a confiabilidade do core.
Mais informações podem ser vistas em http://bakery.cakephp.org/articles/view/rc4-close.
Powered by WordPress