segunda-feira, 18 de janeiro de 2010

Comparação de desempenho ASP.NET x PHP

O mito
Não entendo o porque do mito dos programadores dizerem que o php é mais rapido. Dizem que o asp.net é lerdo e desajeitado, algo amplamente aceito nas comunidades de software livre, porém ao dizer isso ignora-se os fatos.
Pra tentar ajeitar isso vou colocar alguns fatos, antes de me criticarem lá no fundo eu até gosto um pouquinho de php... bah ta bom quem me conhece sabe que não gosto mesmo de php.

Compilada x interpretada
As páginas ASP.NET são compiladas ou seja otimizadas, mesmo que você não compile ela antes de enviar ao servidor a página quando requisitada é compilada e vai para o cache do servidor são assim carregadas mais rápidas.
O php por outro lado é uma linguagem interpretada, o que significa que seu código é executado diretamente como foi escrito.
É amplamente aceito e provou-se várias vezes que os programas compilados funcionam geralmente mais rápido do que os interpretados porque programas interpretados precisam ser reduzidos para instruções de máquina em tempo de execução. Aqui está uma citação de Wikipédia que mostra o quanto mais rápido eles podem ser: "Um programa traduzido por um compilador tende a ser muito mais rápido do que um interpretado: até mesmo uma relação de 10:1 não é incomum.


Os números
Saindo da teoria e indo para os testes, os dados são da Wrensoft

Este primeiro gráfico mostra o tempo necessário para o carregamento dos resultados da busca de um pequeno site.

Como da pra ver, o tempo médio para o site do php: 0,1500 segundo, já o tempo para Asp.Net: 0,0150 segundo ... o que é uma enorme diferença (10x mais)! O próximo gráfico faz o mesmo com um site maior, e os resultados não são muito diferentes.





Php teve uma média de 1,0097 segundos enquanto o Asp.Net levou 0,0810 segundos, php levou mais de 12 vezes mais tempo para ser executado...


Agora, esses testes foram executados com basicamente o mesmo código traduzidos em línguas diferentes, por isso não da pra falar que foi mal codificado. Mas, há ainda [válidos] argumentos de que os testes acima foram executados em um máquina Windows, e desde então. Net é nativo do Windows, e foi um julgamento injusto, por isso agora vamos dar uma olhada nas estatísticas rodando em Linux, então o PHP irá ter a vantagem, e o C # será executado em mono.

Os valores foram tirados do shootout.alioth.debian.org e tem vários pontos de referencia para várias linguagens é bem legal, ai para a comparação foi escolhida a versão "Limpa"












Nessa comparação deu pra perceber que até no linux é .net é mais rapido, então se alguem tiver mais testes que queira enviar só por nos comentários.

14 comentários:

  1. o pior é que agente sempre quer acreditar que as duas são certas, pois trabalho com php mais sou apreciador das tecnologias .net, mais sempre aumentando o conhecimento pra saber as 2 linguagens pois agente sempre tem q atender a necessidade do cliente independe da tecnologia.

    ResponderExcluir
  2. é as duas são exelentes o que as tornam tão boas é a competição entre elas, dai todos ganham..

    ResponderExcluir
  3. é a competição entre elas pode ser um grande beneficio as duas uma tentandor ser melhor que a outra quem ganha com isso são os desenvolvedores e logo o usuário final.

    ResponderExcluir
  4. Cara gostei muito dessas comparações, pois estou usando esses graficos no meu TCC. pois estou fazendo uma comparação entre PHP e ASP.Net, caso tenha mais algum materia que possa disponibilizar ficarei muito grato.

    ResponderExcluir
  5. Parabéns pela matéria!

    Quando voce pesquisa sobre este assunto (comparação de linguagens), realmente é uma briga eterna (como windows x linux) com risco de morte em alguns casos kKkkKK. Entretanto voce apresentou dados reais não baseados em sua opinião pessoal, o que é muito importante. Realmente muito bom!
    Atualmente sou programador PHP e enfrento alguns problemas com isso, como padronização de código, separação de código/interface, entre outros...
    Como trabalho com soluções Microsoft, o problema se agrava ainda mais ;p
    Estou em dúvida se parto para o .Net ou invisto em algum framework PHP (Zend, Cake, ...) e com certeza este post me ajudou bastante!
    Mas claro, como disse o colega Erick logo acima - "...sempre tem q atender a necessidade do cliente independe da tecnologia."

    Abraços!

    ResponderExcluir
  6. ok, asp.NET é rápido, mas e sem compilarmos o PHP?

    ResponderExcluir
  7. Na verdade essas comparações mostram um certo desespero por parte de alguns programadores....
    não existe linguagem melhor ou pior, td q se faz em uma é possivel fazer em qualquer outra....
    a grande realidade em se tratando de tecnologia é:
    o programador tem que saber varias linguagens tem que dominar uma, ou algumas, e ser razoavel em outras...não pode ficar preso a uma linguagem...
    Uma coisa que precisa ficar claro para os programadores é: O CLIENTE É QUEM MANDA...!!!

    ResponderExcluir
  8. Muito interessante o artigo.

    valdeir caso você leia isso gostaria que me mandasse um e-mail para marcolabr@gmail.com, gostaria muito de conversar com você sobre a sua comparação entre o php e o asp.net.

    ResponderExcluir
  9. PQP vei... antes de querer se passar por sabidão interpreta direito esse gráficos para não passar informação errada.
    A fonte dos dados (http://www.wrensoft.com/zoom/benchmarks.html), que executou os testes chegou a seguinte conclusão: On average, the PHP version is faster than the ASP version, while the CGI (C++)version is more than 10 times faster than both PHP and ASP.
    Ou seja, nada de ASP ser 12x mais rápido q PHP. E ainda tem gente que usa pra tcc, OMG!

    ResponderExcluir
    Respostas
    1. Amigo, o resultado do benchmark diz que PHP é mais rápido que ASP, porém a discussão desse tópico se encontra entre PHP e ASP.NET.
      Há uma grande diferença entre ASP e ASP.NET.
      Se apegue aos detalhes, se não vc poderá considerar as linguagens C,C++ e C# identicas.

      Excluir
  10. O cara aí de cima não sabe interpretar o gráfico e menos ainda a diferença de ASP e ASP.NET.

    ResponderExcluir
  11. Senhores,

    Não adianta nada uma linguagem ser mais rapida do que a outra se o hardware não ajudar .

    ResponderExcluir
  12. Como programador PHP e C#, tenho consciencia que php chega a ser mais pratico em muitos casos, além do desempenho ser muito bom, embora apontado como inferior pelos graficos.
    Mas no fim, a diferença de recursos entre as duas plataformas deixa o PHP a desejar na comparação.

    Para PHP realmente valer a pena sobre .Net, é necessário que o sistema seja de baixa complexidade (poucos recursos de IO e integração com outros serviços) voltado para plataforma linux. Caso contrario, nem deve ser levado em consideração.
    E para completar, .Net evolui muito mais rápido que PHP.

    ResponderExcluir
  13. Bom voce comparar ASP com PHP tudo bem as duas são liguagens scripts interpretadas pelo servidor ou seja tem a mesma funcionalidade e praticamente a mesma forma de programação. Já o ASP.NET ou tecnologias .NET já funcionam de maneiras diferentes neste caso voce poderia comparala com a tecnologia JDK que trabalha da mesma forma que o .NET que eles chamam de componentização ou seja essas tecnoligias trabalham em um ambiente Orientado a Objeto com a criação de diversos componentes que nem no delphi por exemplo.

    Pense como se fosse o pascal e o delphi ou o C e o Visual C++ ou C++ Builder. são tecnologias difentes. voce pode dizer mas C++ é muito melhor que C ou que delphi eh muito melhor que pascal. Bom isso não seria uma comparação justa. O C puro por exemplo vc pode utiliza-lo para construir codigos muito mais leves e mais eficientes caso não precise de um front end, Já o C++ facilita a vida de quem quer um Front End com os seus objetos e classes para desenho de tela etc... a mesma coisa ocorre entre o PHP e o ASP.NET. Posso ainda adiantar-lhe que as tecnologias Orientadas a Objeto geralmente são bem mais lentas que as estruturais pois exigem muita encapsulação de suas classes porem são menos trabalhosas e talvez mais poderosas dependendo do ponto de vista.

    ResponderExcluir