Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Pergunta avançada sobre performance em declarações public ou private em metodos

Imaginando um cenário de um sistema em PHP grande com milhares de métodos e variáveis.

Agora supondo que todos os métodos e variáveis estejam declarados como public.

Teriamos aumento de performance se ajustar corretamente private e public neste MILHARES de métodos e variáveis?

Estou perguntando isso, pq os métodos public ficam disponíveis para ser utilizado em qualquer lugar do sistema, ou seja, o PHP teria que salvar "em memoria" todas as informações destes métodos publics, enquanto o private não precisa pois não são acessíveis e visíveis.

A pergunta é especificamente sobre PERFORMANCE, e não sobre utilização correta de cada tipo de declaração.

3 respostas

Opa Maicon, o impacto não seria relevante. Lembra, o PHP é interpretado. Ele vai ler linha a linha independente se tá público ou privado. Não existe essa diferenciação de salvar em memória o que é public e não salvar o que é privado.

A gente tem a impressão de que porque passa por um método a mais, isso torna as coisas mais lentas. Mas esquece que a diferença não é perceptível, mesmo na casa dos milhares de execução.

Lembrando, performance não é apenas questão de como o código foi escrito, etc. Tem vários fatores ai e o public e o private até onde sei, não estão no meio desses fatores.

Sinceramente, tenho minhas dúvidas.

Eu entendo que ele vai ler linha por linha, porém variáveis e métodos private ele não precisa guardar em "memoria" nenhuma informação pois somente serão utilizadas no escopo, seria até uma falha gravíssima de segurança e arquitetura se o php e/ou qualquer outra linguagem armazenar esta informação mesmo sem ser utilizada no futuro.

E tbm seria outra falha de arquitetura se o code da linguaguem não armazenar as informações do que é publico, mesmo que seja uma "lista".

Falando em sistema gigantes com milhares de métodos, camadas e milhares de acessos simultâneos assim que teria impacto SIM na performance, mesmo que pequena na faixa de 3%.

Quem poderia dar esta informação é alguma pessoa especialidades em processamento e arquitetura de baixo nível. Alura tem alguém assim?

solução!

Bom dia Maicon!

Creio que, quando você falou "milhares de métodos e variáveis" sua intenção era dizer "milhares de métodos e atributos".

Declarar todos os atributos como public vai violar o encapsulamento, podendo te causar problemas.

Em relação a performance, creio que não faça diferença ter todos os atributos e métodos públicos ou privados.

Até onde eu sei, sua preocupação quanto ao PHP "salvar em memória" todas as informações não faz muito sentido. O espaço que um determinado Objeto vai ocupar na memória não depende da visibilidade dos atributos e métodos.

Cada Objeto (instância de uma determinada Classe) ocupa um determinado lugar na memória, os Métodos são da Classe, não do Objeto.

Não tenho certeza, mas creio que os Métodos são salvos em um único lugar na memória e são acessados por cada instância isoladamente. Já os atributos são de cada instância (Objeto), e são salvos cada qual em seu lugar na memória, logo, ser público ou privado não vai ocupar mais ou menos espaço na memória.

Enfim, espero ter ajudado!

Abraço!