Otimizando velocidade de execução de código java

Sou uma pessoa que costuma criar variáveis e coisas do tipo com nomes enormes. Por exemplo:

int quantosDadosOUsuarioInformou = 10;

Gostaria de saber se a diferença de performance dos códigos abaixo (apenas modificado o nome das variáveis) seria muito grande, ou significativo.

int quantosDadosOUsuarioInformou = 0; int contagemQueVaiSerFeitaPeloWhile = 0; while(quantosDadosOUsuarioInformou < 100000000) { quantosDadosOUsuarioInformou++; contagemQueVaiSerFeitaPeloWhile++; }
e

int a = 0; int b = 0; while(a < 100000000) { a++; b++; }

Sem avaliar clareza e outras coisas, apenas performance, mudaria alguma coisa no tempo que o código levaria para ser executado completamente? O segundo código seria mais rápido?

Não vai dar nem um fentossegundo sequer de diferença.

Mesmo que o while se repita 100000000 de vezes?

[quote=alexcostars]Sou uma pessoa que costuma criar variáveis e coisas do tipo com nomes enormes. Por exemplo:

int quantosDadosOUsuarioInformou = 10;

Gostaria de saber se a diferença de performance dos códigos abaixo (apenas modificado o nome das variáveis) seria muito grande, ou significativo.

[/quote]

Não ha qualquer diferença porque isso não interfere em nada. Mesmo que repita para sempre.

Continue usando nomes expressivos que está bom. Nunca use nomes curtos como a , b etc… (a menos que esteja calculando uma forma conhecida como F= ma ou a = (b^2 + sqrt(4ac - a^2)) / 2a )

Não, não pretendia mudar, era só curiosidade. Vlw pelos esclarecimentos.

É que depois de compilado, os nomes de variáveis desaparecem. Isso aí vira um monte de acesso a registradores, com uma quantidade de nomes bem restrito.
No caso desses dois códigos, o assembly final será exatamente igual, já que eles fazem a mesma coisa.

ah Mas me digam se o parser e os seus olhos não terão menos trabalho se os nomes das variáveis forem menores?

Seus olhos talvez. Pro parser, mal faz diferença.

http://www.javaperformancetuning.com/

Dica: só de olhar um código, é difícil dizer se ele vai ser rapidamente executado ou não (mesmo com muita experiência), a menos que esteja sendo feita alguma coisa muito absurda.

[quote=entanglement]http://www.javaperformancetuning.com/

Dica: só de olhar um código, é difícil dizer se ele vai ser rapidamente executado ou não (mesmo com muita experiência), a menos que esteja sendo feita alguma coisa muito absurda. [/quote]

Uma época acompanhei esse site, mas achei que eles pecaram em não ser mais criteriosos. Alguns artigos aí só falam bobagem, como “a importância de usar final”.

Então, é uma boa procurar também fontes confiáveis de informação, como os artigos do Goetz:




E fazer você mesmo muito profiling, usando para isso a Visual VM ou o Profiler do Netbeans.

E o trabalho do seu cerebro ?
Se as variáveis tem nomes coerentes como o que representam é muito mais facil entender o codigo. Os olhos são muito rápidos e na maioria das vezes vc lê por comparação de padrãoes e não por juntar letra a letra. Ou seja, é tudo muito mais rápido quando usa variáveis com nomes coerentes. Independentemente do tamanho.

Em códigos compilados não faz diferença, mas em códigos interpretados pode fazer.

Uma diferença significativa é com aplicações web pesadas, com muito código em JavaScript e CSS (veja o código do Google Maps).

A velocidade de início da aplicação depende de você primeiro baixar a aplicação para o teu navegador, e então rodar ela. Arquivos menores são baixados em menos tempo que os maiores, então os otimizadores de código minificam ele, tornando-o menor.

Outro uso dessa técnica é obfuscação de código.

Sim. No caso do Java (pergunta do autor do tópico), não faz diferença.
Para java script, com certeza. Mas muitas vezes o problema não está no parser, e sim no fato de se ter que fazer download do script. E scripts grandes tem mais kb do que scripts pequenos. Com ofuscadores, pode-se reduzir muito o tamanho final do arquivo.