As comparações de velocidade - OO vs. processuais em linguagens interpretadas

votos
17

Em linguagens de programação interpretada, como PHP e JavaScript, quais são as repercussões de ir com uma abordagem orientada a objetos sobre uma abordagem processual?

Especificamente o que eu estou procurando é uma lista de coisas a considerar ao criar uma aplicação web e escolher entre as abordagens processuais e Object Oriented, para otimizar não apenas para a velocidade, mas de manutenção também. casos de pesquisa e teste citados seria útil também se você souber de quaisquer artigos que exploram este projecto.

Bottom line: quão grande (se houver) é o desempenho atingido realmente, quando vai com OO vs. processuais em uma linguagem interpretada?

Publicado 06/08/2008 em 04:34
fonte usuário
Em outras línguas...                            


7 respostas

votos
17

Talvez eu sou louco, mas se preocupar com a velocidade em casos como este usando uma linguagem interpretativa é como tentar descobrir qual a cor para pintar o galpão. Não vamos nem entrar na ideia de que este tipo de otimização é totalmente prematuro.

Você bateu o prego na cabeça quando você disse 'manutenção'. Eu escolheria a abordagem que é a mais produtiva e mais sustentável. Se você precisa acelerar mais tarde, isso não vai vir de alternar entre processual contra o objeto paradigmas de codificação orientada dentro de uma linguagem interpretada.

Respondeu 06/08/2008 em 04:36
fonte usuário

votos
10

Infelizmente, eu fiz meus testes também. Eu fiz velocidade de ensaio, e é sobre o mesmo, mas ao testar para o uso de memória ficando memory_get_usage () em PHP, eu vi um número esmagadoramente maior no lado do OOP.

116,576 bytes para OOP a 18,856 bytes para processual. Eu sei "Hardware é barato", mas vamos lá! aumento de 1.000% no uso? Desculpe, isso não é o ideal. E ter tantos usuários que batem seu site ao mesmo tempo, tenho certeza de que sua memória RAM apenas iria queimar, ou correr para fora. Estou errado?

Respondeu 22/07/2011 em 22:28
fonte usuário

votos
5

Linha inferior: nenhum, porque a sobrecarga de interpretação oprime a sobrecarga de expedição método.

Respondeu 06/08/2008 em 04:35
fonte usuário

votos
2

Se você estiver usando uma linguagem interpretada, a diferença é irrelevante. Você não deveria estar usando uma linguagem interpretada se o desempenho for um problema. Ambos irão realizar sobre o mesmo.

Respondeu 06/08/2008 em 04:49
fonte usuário

votos
1

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

OOP requer muito mais alocações de memória (malloc) e muito mais operações para executar na memória do que o código processual. Ela exige muito mais tempo de CPU para executar suas tarefas. É essencialmente 'sobrecarga', envolto em torno do código processual, aumentar a carga da CPU para executá-lo, especialmente quando executar operações de banco de dados.

Muitos programadores como a conveniência de OOP, criando pequenas caixas pretas escondidos atrás de interfaces simples. No entanto, tenho sido pago bem para reviver sites que estavam a tomar para sempre para responder sob carga usuário pesado. Excluindo o OOP e substituí-lo com funções simples de procedimento fez uma enorme diferença.

Se você não espera que seu site seja muito ocupado, por todos os meios usar OOP. Se você está construindo um sistema de alto tráfego, você vai querer tirar cada ciclo de CPU do processamento e cada byte a partir da saída que você pode.

Respondeu 22/03/2015 em 19:31
fonte usuário

votos
1

Seu desempenho será caracterizada pela aplicação, não a linguagem. Você poderia usar a linguagem mais lento e poderia escalar para ser o maior site do mundo, desde que você projetá-lo em escala.

Basta lembrar a primeira regra de optimiztion.

não.

:)

Respondeu 22/09/2008 em 19:18
fonte usuário

votos
0

Eu realmente feito um pequeno teste como este em python em um site que eu manter e descobriu que eles são quase equivalentes em velocidade, com a abordagem processual vencendo por algo como dez milésimos de segundo, mas que o código OO assim foi significativamente mais limpo eu não continuar o exercício por mais tempo do que uma iteração.

Então, realmente, não importa (na minha experiência de qualquer maneira).

Respondeu 26/08/2008 em 21:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more