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

12 respostas
A

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?

12 Respostas

ViniGodoy

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

A

Mesmo que o while se repita 100000000 de vezes?

sergiotaborda

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.

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 )

A

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

ViniGodoy

É 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.

G

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?

ViniGodoy

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

E

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.

ViniGodoy

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.

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.

sergiotaborda

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.

B

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.

ViniGodoy

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.

Criado 24 de novembro de 2009
Ultima resposta 25 de nov. de 2009
Respostas 12
Participantes 6