Fiz uma comparação bem simples com as três linguagens que uso atualmente para desenvolver para a web: PHP, Python e Ruby.
Resolvi compartilhar com vocês o resultado deste teste. Fiz o seguinte: peguei uma aplicação de exemplo bem simples, um livro de visitas. Basicamente é apenas uma tela, onde há uma listagem das assinaturas e um formulário para que a pessoa possa assinar o livro de visitas, com apenas um campo para a mensagem.
Após decidir sobre a aplicação, escolhi os ambientes em que iria montar ela:
1 - PHP, banco de dados MySQL, servidor Apache rodando localmente e framework Codeigniter
2 - Python, Google Datastore rodando sobre GoogleAppEngine localmente, framework Webapp/Django
3 - Ruby, banco de dados SQLite, rodando localmente sobre Mongrel, framework Rails

Montei a mesma aplicação nos três ambientes, e comparei os resultados. Confiram:
Linguagem: PHP
Framework(s): Codeigniter
Ambiente: Apache/PHP5
Banco de dados: MySQL
Tempo de desenvolvimento: ~11 minutos
Linhas de código digitadas: ~50
Tempo de resposta: ~34ms
Linguagem: Python
Framework(s): Webapp e Django (templates)
Ambiente: Google AppEngine
Banco de dados: Google DataStore
Tempo de desenvolvimento: ~13 minutos
Linhas de código digitadas: ~64
Tempo de resposta: ~80ms
Linguagem: Ruby
Framework(s): Ruby on Rails
Ambiente: Mongrel
Banco de dados: SQLite
Tempo de desenvolvimento: ~7 minutos
Linhas de código digitadas: ~31
Tempo de resposta: ~122ms
Então nosso placar fica assim:
Linhas de código:
1 - Ruby (~31 linhas)
2 - PHP (~50 linhas)
3 - Python (~64 linhas)
Tempo de desenvolvimento:
1 - Ruby (~7 minutos)
2 - PHP (~11 minutos)
3 - Python (~13 minutos)
Tempo de resposta:
1 - PHP (~34ms)
2 - Python (~80ms)
3 - Ruby (~122ms)
Caso queira baixar os arquivos do projeto escrito nas três linguagens, baixe aqui.
Lembrando que o teste teve como objetivo apenas minha curiosidade pessoal, e não foi feito rigorosamente, portanto os números podem não ser exatos.
Mesmo assim, foi muito divertido =]
Postado em: 11/12/2008 @ 12:12 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.