Pergunta

Em linguagens de programação interpretadas, como PHP e JavaScript, quais são as repercussões de adotar uma abordagem Orientada a Objetos em vez de uma abordagem Processual?

Especificamente, o que procuro é uma lista de verificação de itens a serem considerados ao criar um aplicativo da Web e escolher entre abordagens processuais e orientadas a objetos, para otimizar não apenas a velocidade, mas também a capacidade de manutenção.Pesquisas citadas e casos de teste também seriam úteis se você conhecesse algum artigo que explorasse isso mais detalhadamente.

Conclusão:quão grande (se houver) é realmente o impacto no desempenho, quando se usa OO vs.Processual em uma linguagem interpretada?

Foi útil?

Solução

Talvez eu seja louco, mas me preocupar com a velocidade em casos como esse usando uma linguagem interpretativa é como tentar descobrir de que cor pintar o galpão.Não vamos nem pensar que esse tipo de otimização é totalmente prematuro.

Você acertou em cheio quando disse 'manutenção'.Eu escolheria a abordagem mais produtiva e mais sustentável.Se você precisar de velocidade mais tarde, isso não resultará da alternância entre paradigmas de codificação processual e orientado a objetos dentro de uma linguagem interpretada.

Outras dicas

Infelizmente, também fiz meus testes.Eu testei a velocidade e é quase a mesma, mas ao testar o uso de memória obtendo memory_get_usage() em PHP, vi um número esmagadoramente maior no lado OOP.

116.576 bytes para OOP a 18.856 bytes para processuais.Eu sei que "Hardware é barato", mas vamos lá!Aumento de 1.000% no uso?Desculpe, isso não é o ideal.E com tantos usuários acessando seu site ao mesmo tempo, tenho certeza de que sua RAM simplesmente queimaria ou acabaria.Estou errado?

Conclusão:não, porque a sobrecarga de interpretação supera a sobrecarga de envio de métodos.

Na minha experiência, um site sob carga pesada ficará atolado e não responderá muito mais facilmente com código OOP do que com código processual.A razão é fácil de entender.

OOP requer muito mais alocações de memória (MALLOC) e muito mais operações para serem executadas na memória do que código processual.Requer muito mais tempo de CPU para executar suas tarefas.É essencialmente uma 'sobrecarga', envolvida em código processual, aumentando a carga da CPU para executá-lo, especialmente ao executar operações de banco de dados.

Muitos programadores gostam da conveniência da POO, criando pequenas caixas pretas escondidas atrás de interfaces simples.No entanto, fui bem pago para reviver sites que demoravam uma eternidade para responder sob grande carga de usuários.Eliminar o OOP e substituí-lo por funções procedurais simples fez uma enorme diferença.

Se você não espera que seu site fique muito ocupado, use OOP.Se você estiver construindo um sistema de alto tráfego, você desejará retirar cada ciclo de CPU do processamento e cada byte possível da saída.

Se você estiver usando uma linguagem interpretada, a diferença é irrelevante.Você não deve usar uma linguagem interpretada se o desempenho for um problema.Ambos terão o mesmo desempenho.

Seu desempenho será caracterizado pela implementação, não pela linguagem.Você poderia usar a linguagem mais lenta e ele poderia ser dimensionado para se tornar o maior site do mundo, desde que você o projetasse em escala.

Basta lembrar a primeira regra de otimização.

Não.

:)

Na verdade, fiz um pequeno teste como este em python em um site que mantenho e descobri que eles são quase equivalentes em velocidade, com a abordagem processual vencendo por algo em torno de dez milésimos de segundo, mas que o código OO foi tão significativamente mais limpo, não continuei o exercício por mais de uma iteração.

Então, realmente, isso não importa (pelo menos na minha experiência).

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