Os nomes de variáveis ​​afetam o desempenho dos sites?

11

Os nomes de variáveis ​​afetam o desempenho do site? Eu sei que esse número será muito baixo, mas ainda assim alguém pode fornecer os motivos para não escolher um nome de variável longo no aspecto do desempenho?

Avinash
fonte
2
Esclareça sua pergunta - onde está essa variável e em que idioma está escrita?
Luke Graham
15
NUNCA, NUNCA escolha nomes de variáveis ​​curtos e ilógicos se o seu raciocínio for um desempenho (questionável). O código fonte existe para que outras pessoas o leiam, não para satisfazer os computadores e seus ganhos microscópicos de desempenho.
Michael JV
Eu estou usando PHP ..
Avinash
1
... E você possui xpertdeveloper.com?
19711 Jim G.Jul
3
Oi Avinash, você pode explicar em sua pergunta sua justificativa para pensar que esse pode ser o caso?

Respostas:

16

Não, não vai. De um modo geral, quando o código é compilado, os nomes das variáveis ​​são substituídos pelo endereço de memória a que se referem. Os computadores não sabem nada sobre nomes de variáveis; eles querem apenas saber onde os valores são armazenados.

Variáveis ​​são símbolos, nada mais. Eles substituem valores hexadecimais por nomes para que os programadores tenham mais facilidade em entender o que estão fazendo. Portanto, não haverá aumento de desempenho escolhendo nomes de variáveis ​​mais curtos.

Dito isso, você pode obter melhorias minúsculas (e estou falando microscópicas) nos tempos de compilação e na primeira interpretação do JIT, mas isso ocorre apenas porque o analisador leva alguns ciclos de CPU a menos para ler o nome da variável. Esse é um custo único e é estatisticamente insignificante quando se preocupa com o desempenho.

Michael K
fonte
11
Embora sua resposta esteja correta para a programação de aplicativos, o OP está se referindo a sites e, portanto, há uma chance de ele estar usando uma linguagem interpretada. Nesse caso, o código precisaria ser lido no arquivo e depois interpretado. Nesse caso, um nome de variável mais longo levará mais tempo para carregar e analisar. No entanto, o ganho de desempenho será insignificante e massivamente compensado pelo incômodo extra ao programador de ler e entender o código.
Gavin Coates
1
@ Gavin Também está correto para idiomas interpretados - "Primeira interpretação JIT". A maioria das linguagens interpretadas agora compila à medida que executam, em vez de execução linha por linha, o AFAIK.
Michael K
1
Michael - para compilar, o arquivo deve primeiro ser lido na memória. Esse processo levará mais tempo, dependendo do tamanho do arquivo. Nomes de variáveis ​​mais longos = arquivos mais longos.
Gavin Coates
16

qualquer um pode fornecer os motivos para não escolher um nome de variável longo no aspecto do desempenho?

Michael cobriu a resposta (ex. Não), mas os nomes de variáveis ​​afetam o desempenho do programador . Se você contratar um novo desenvolvedor ou alguém que não esteja familiarizado com o código, ter nomes de variáveis ​​longos e / ou confusos pode distrair e retardar o processo de compreensão.

Em geral, você deseja usar nomes de variáveis ​​curtos e descritivos porque são mais fáceis de ler. Imagine se você precisar ignorar seu código por 10 anos e entender tudo novamente. Você prefere ler "getInput" ou "getInputFromUserWhoInputsStringOrElseInformReaderOfError"? (exagero, é claro: P)

Há momentos, no entanto, quando ter um nome um pouco mais longo pode ser benéfico. Por exemplo, getBirthdayInput () seria muito mais descritivo que getInput (). Você deseja simplificar até certo ponto, mas a simplificação excessiva também pode ser problemática.

BlackJack
fonte
6
para ler nomes longos é melhor, se você encontrar "getInputFromUserWhoInputsStringOrElseInformReaderOfError", não precisará ler a documentação da função, se encontrar "getInput" necessário. E após 10 anos a documentação estará errada, incompleta ou ausente. getInputFromUserWhoInputsStringOrElseInformReaderOfError certamente é muito demorado, mas entender o que é longo é melhor (e não me importo que as mulheres digam que o tamanho não importa).
Dainius
Eu discordo neste caso. Eu acho que apenas lendo o código seria muito fácil entender o que o getInput () faz, especialmente se ele imprimir "entrada inválida" ou algo imediatamente depois. Definitivamente, há momentos em que um nome mais longo pode ser melhor - eu vou editá-lo!
BlackJack 13/07
ofc depende do contexto, mas, na minha experiência, o nome mais longo é melhor (mas não desde que getInputFromUserWhoInputsStringOrElseInformReaderOfError). E o contexto realmente importante como file.read () é mais rápido que file.readAllFileAsByteArray (). Mas, como eu disse, geralmente o nome mais longo do IMHO fornece mais informações.
Dainius
1
Se a documentação estiver errada, incompleta ou ausente, a base de código está condenada de qualquer maneira.
Christopher Mahan
2
Isso está respondendo a uma pergunta que não foi feita.
7

A menos que você esteja usando o cache do código operacional (também conhecido como "aceleradores PHP"), haverá realmente um impacto. Mas esse impacto é tão baixo que pode ser negligenciado. Se você usar o cache do código operacional, não haverá impacto.

vartec
fonte
1
e se você se importa tanto com o desempenho que considera encurtar nomes de variáveis ​​para obter alguns ciclos, não usar o cache do código operacional seria criminoso ... e recomenda-se alternar para um idioma compilado como C.
SF.
Mas, obviamente, esse impacto é acumulativo; portanto, quanto maior a aplicação, maior o impacto, certo?
N00dles
3

Enquanto Michael está correto para a programação de aplicativos, sua pergunta se refere ao desenvolvimento da Web com PHP, que é uma linguagem interpretada. Nesse caso, o código precisaria ser lido no arquivo e depois interpretado. Nesse caso, um nome de variável mais longo levará mais tempo para carregar e analisar.

No entanto, o desempenho atingido com isso será insignificante e provavelmente estará na região de frações de milissegundos para um script inteiro. Você sempre pode experimentá-lo com um script de exemplo e usar um método de temporização como o detalhado em http://www.developerfusion.com/code/2058/determine-execution-time-in-php/, mas provavelmente isso não acontecerá. comece a cronometrar até depois da leitura do arquivo. Além disso, o tempo de execução entre tentativas variará muito mais do que a diferença entre os comprimentos dos nomes de variáveis, portanto, você precisará executar um número significativo de tentativas e calcular a média de cada uma delas antes de poder obter uma média remotamente significativa.

Como o BlackJack aponta, nomes mais longos podem ser muito mais difíceis de entender e exigem muito esforço extra para serem digitados (e são muito mais propensos a erros de digitação). Embora possa haver um pequeno ganho de desempenho, isso não justifica o aborrecimento extra criado para o programador. Como tal, nomes de variáveis ​​curtos, concisos e fáceis de entender são os preferidos.

Portanto, em resumo, não se preocupe com o nome do tamanho da variável, mas concentre-se em escrever um código limpo e significativo.

Gavin Coates
fonte
1

Talvez :

O código do servidor geralmente é compilado e o tamanho do nome da variável não o afetará pelos motivos mencionados. No entanto, se o nome da variável for usado para criar marcação várias operações de cadeia. Como a resposta HTTP (contendo marcação / json retornado / dados retornados) é maior, levará um pouco mais de tempo, embora a diferença seja insignificante. Se o JavaScript não for minificado, será um arquivo maior, levando mais tempo para viajar para o cliente.

Além de reduzir os arquivos JavaScript, qualquer esforço de otimização para um aplicativo / site da Web será mais bem gasto em outros aspectos.

StuperUser
fonte
1

Sim, será, mas não no sentido em que você está pensando.

Com nomes de variáveis ​​ruins, os desenvolvedores ficarão facilmente confusos no código fonte. Será difícil ler e entender.

No final, o código-fonte será difícil de manter e será quase impossível fazê-lo evoluir. Isso levará inevitavelmente a custos de manutenção mais altos, custos de desenvolvimento mais altos, mais bugs e piores desempenhos .

O nome da variável não terá absolutamente nenhuma influência no tempo de execução e é totalmente desprezível no momento da compilação. Mas nomes ruins inevitavelmente levam a um desempenho ruim, porque ninguém entende o código e ele acaba em uma pilha de hackers, um sobre o outro, piorando as coisas a cada vez.

Leia estes para saber sobre o bom nome da variável: http://tottinge.blogsome.com/meaningfulnames

Observe que, se você sentir a necessidade de um nome de variável muito longo, isso significa que seu código está mal arquitetado. Um nome de variável é sempre expresso em um contexto: espaço para nome, nome da classe, nome do arquivo, pasta, nome da função etc. Portanto, se o nome precisar ser longo para ser explícito, isso significa que o que você está tentando nomear DOESN ' T PERTENCE AQUI . Nesse caso, pense em colocar esse código no local apropriado ou crie esse local se ele ainda não existir.

deadalnix
fonte