As linguagens comparadas foram escolhidas através de sua popularidade, segundo o site LanPop; descartadas as que não são propriamente web. As eleitas, nada fora do esperado, foram:
PHP
ASP
.NET
Perl
JSP
Como o site de referência não menciona versões e em prol de uma comparação mais ampla, versões diferentes de cada linguagem foram consideradas neste estudo.
Outro fator importante para a qualidade do resultado é o ambiente. Desta forma foi estabelecido que cada linguagem deveria rodar em seu ambiente nativo, exceto o Java (JSP). As linguagens Php e Perl, foram executadas em ambiente Linux, Asp e .NET em ambiente Windows e o Java (JSP) em ambas as plataformas. A configuração dos ambientes de execução obedeceu religiosamente a instalação padrão, levando em conta modificações que permitiam que a plataforma utilizasse todos os recursos oferecidos pelo hardware, principalmente memória ram. É sabido que existem diversos módulos e extensões que permitem a otimização de desempenho para cada linguagem, estes foram desconsiderados totalmente deste teste. A configuração do ambiente, de forma sucinta, consta abaixo:
Hardware do servidor (Windows e Linux)
Processador Intel Xeon TM Dual (biprocessada)
2Gb RAM
2x Discos SCSI 76Gb
Placa de Rede Gigabit
Máquinas clientes (4 PCs)
Processador AMD Atlhon 64 2800
1Gb RAM
Placa de Rede Gigabit
Sistema operacional - Linux Debian 64
Infraestrutura de Rede
Switch Gigabit
Rede local
Medições
As principais medições realizadas estão detalhadas a seguir.
Tempo de resposta
Avaliar o tempo entre a requisição e seu completo processamento
O resultado equivale a média de tempo em relação ao número de requisições.
Utilização de CPU
Avaliar a utilização de processamento do servidor durante as requisições.
O resultado equivale a média de uso do processamento em relação ao número de conexões.
Utilização de RAM
Avaliar a utilização da memória RAM durante as requisições.
O resultado equivale a média de uso da mémoria em relação ao número de requisições em relação ao tempo de duração das requisições
Para realizar a medição, foram desenvolvidos scripts simples, onde sua função basica era o calculo do pi com 20 casas decimais e na sequência a ordenação de um array numérico com 100 posições preenchidas aletoriamente a cada requisição, utilizando o método de ordenação bubble sort
Metodologia
Enviar um bloco de X requisições, sendo que cada uma das quatro máquinas clientes enviam a um mesmo servidor X/4 requisições. Utiliza-se o software wget para realizar cada requisição e posteriormente o software webscarab.
Aguardar e registar o resultado.
Estabilizar o servidor e as máquinas clientes.
Enviar um novo bloco de requisições, conforme item 1.
Este estudo permanece em desenvolvimento, uma vez que durante os procedimentos notou-se a necessidade de realizar testes mais aprofundados considerando outos fatores e variáveis. Em breve devo publicar um artigo contendo o estudo e os resultados completos, mas por hora apresento o resumo dos resultados obtidos até aqui.
Ainda é prematura uma conclusão definitiva baseada na análise dos dados. Pelo que o mercado brasileiro fala de algumas linguagens como Java e .NET, alguns mitos e paradigmas estão caindo por terra.