Pergunta

Eu construo sites orientados a bancos de dados. Anteriormente, usei Perl ou PHP com MySQL.

Agora estou iniciando um grande novo projeto e quero fazer isso da maneira que resultará no Site possível mais receptivo.

Vi várias páginas aqui, onde perguntas sobre como otimizar o PHP são criticadas com várias versões de "não vale a pena fazer um grande esforço para otimizar o PHP, pois é uma linguagem interpretada e não fará tanta diferença".

Eu também ouvi várias discussões (especialmente no podcast So) sobre os benefícios de Compilado vs. idiomas interpretados, e parece que seria do meu interesse usar uma linguagem compilada para servir o site em vez de um idioma interpretado.

Isso é possível em um contexto da web? Se sim, qual seria uma escolha de idioma razoável?

Além de acelerar um benefício, a previsão é a possibilidade de Encontrar bugs no tempo de compilação Em vez de ter que depurar o site. Isso é razoável de esperar?

Foi útil?

Solução

O que você pode fazer é o que vários sites de tráfego pesado fazem (como o Facebook ou o Twitter), também conhecido como seu algorythm "CPU consumindo" em uma plugina C.

Por exemplo, você pode escrever um Extensão PHP Se você planeja usar o PHP, ou um Extensão do rubi Se você planeja usar rubi / rubi nos trilhos, etc.

Dessa forma, você pode manter seu código de ramo simples e fácil de manter (pode ser muito mais difícil lidar com a solicitação de C e não de PHP), enquanto possui um núcleo de fundo forte e sólido (porque é compilado, e o compilador diz a você o que os problemas estão em tempo de compilação)

Outras dicas

Se você fosse construir um novo idioma ... e você criou toda a semântica e ela estava completa, e você tinha alguma caixa mágica que teve uma mudança entre fazer o idioma compilado versus interpretado, a versão compilada seria mais rápida do que a versão interpretada.

Por quê? Porque compilação traz sua semântica para um nível mais baixo na máquina, o que significa que ela pode executar muito mais rápido, enquanto interpretação significa que a semântica do seu idioma será traduzida por alguns coisa (ou seja, o intérprete) quando o usuário realmente usa seu site.

Dito isto ... isso não significa necessariamente que seu site será 100% executado mais rápido em um idioma compilado versus um idioma interpretado. Atualmente, existem intérpretes que são muito rápidos para vários idiomas (ou seja, PHP), e há até otimizadores para idiomas interpretados que os tornam mais rápidos.

Existem muitas outras coisas que entram no desempenho do seu site que são agnósticas do idioma que você escolher. Configuração de hardware, configuração do banco de dados, topologia de rede etc. Essas coisas podem ter um impacto maior em você. Eu sugeriria medir para ter certeza.

Para mim, encontrar bugs no tempo de compilação é um enorme Economizador de tempo, então eu prefiro idiomas compilados que são fortemente digitados. Isso me permite fazer meu trabalho mais rápido, mas isso não o torna objetivamente a melhor opção. Algumas pessoas não têm problema em escrever um código digitado fracamente e executando suítes de teste para verificar sua funcionalidade, o que eu acho que funcionaria da mesma forma.

IMHO, não é um pouco de sentido escrever um aplicativo da Web complexo usando um idioma compilado, pois não oferece benefícios contra vários problemas de gerenciamento.

Existem muitas maneiras de aumentar as performances e a escalabilidade em um idioma com script, tanto no nível do idioma quanto no nível do sistema, sendo as performances menores, eventualmente disponíveis com uma linguagem compilada totalmente influente.

Por outro lado, acho muito útil seguir um esquema ágil de desenvolvimento e caça de insetos, simplesmente alterando seu código e vendo os resultados.

O Perl não é um idioma interpretado: é compilado no ByteCode, então você paga o preço da interpretação somente quando o executável Perl é iniciado. Portanto, ao usá -lo com o Apache, não use CGI, mas mod_perl.

Faça o que fizer, o tempo de desenvolvimento provavelmente excederá amplamente o tempo de resposta se você escolher um idioma que não seja adequado à programação da Web ou não tenha boas bibliotecas para apoiar o que você precisa fazer. Por exemplo, eu nunca escolheria C ou C ++. Você não quer um aplicativo da web que seja de forma mais rápido, mas com buggy e 6 meses atrasado.

Tomcat é uma maneira comum de usar linguagens compiladas para implantar páginas da web, mas antes de ir longe demais, considere seriamente quais serão seus gargalos de velocidade. Existem algumas fontes principais de desaceleração nos aplicativos da Web:

  1. Latências de rede
  2. Mídia estática, especialmente imagens
  3. Consultas de banco de dados
  4. Código de processamento do lado do servidor
  5. Código de processamento do lado do cliente

1 e 5 realmente não têm muito a ver com essa pergunta.

2 será relevante se você tiver muitas imagens que variam de página para página. Se for esse o caso, os navegadores do cliente não farão um bom trabalho em cache, e cada carga de página levará algum tempo. Nesse caso, é muito provável que seu idioma do lado do servidor não seja notado, porque a sobrecarga da mídia estática dominará.

3 provavelmente será um fator maior que 4 para muitas aplicações. Se você tiver muito poucos dados, mas faz muito processamento, 4 poderá dominar, mas, caso contrário, 3 dominará mesmo se você estiver usando um idioma interpretado.

As pessoas podem perguntar "Por que otimizar o PHP?" Porque os 2 e 3 geralmente são mais importantes de qualquer maneira. Freqüentemente, um bom Estrutura de cache de banco de dados será uma otimização melhor (e mais fácil).

Existem muitas peças que entram em um aplicativo da Web. O tempo gasto pela camada de aplicação não precisa ser grande. Para um aplicativo típico, os maiores porcos estariam no servidor da web e no banco de dados. Substituir o PHP por um CGI binário não vai mudar isso.

Além disso, embora as partes interpretadas do PHP possam ser um pouco lentas, isso é apenas uma pequena parte do que acontece na execução de um script PHP. Todas as funções fornecidas como parte do idioma são implementadas no código nativo. Por exemplo, quando você chama uma função como preg_match, ele chamará uma biblioteca de código nativa e deixará seu trabalho. Isso significa que há menos interpretação real acontecendo do que você imagina.

Pode haver alguns casos em que o uso de um idioma diferente do PHP possa valer a pena, mas esses são casos especiais. Em geral, não há nada a ganhar aqui.

A latência da rede é de longe o maior fator determinante nesse argumento. De fato, a latência da rede é tanto um fator que torna as considerações do idioma bastante sem importância de um problema de desempenho. Então ... vá com o que você sabe. Use o idioma que você se sente mais confortável e mais produtivo e outras considerações podem ser elaboradas à medida que avança. Agora, dito isso, é sempre divertido experimentar coisas novas e aprender coisas novas pode se tornar uma obsessão; portanto, se o projeto for pessoal que lhe permita a oportunidade de experimentar, bem, por todos os meios ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top