Fica caro declarar variáveis dentro de laços?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
vamorim
JavaEvangelist
[Avatar]

Membro desde: 21/11/2003 17:08:39
Mensagens: 481
Localização: Rio de Janeiro - RJ
Offline

Instanciar objetos dentro de laços pode agregar um custo computacional desnecessário.
E quanto à declaração de variáveis. Existe alguma otimização no javac para que eu possa usar isso sem medo?


Vinci Pegoretti Amorim
http://vinci.blog.br
[Email] [WWW] [MSN] [ICQ]
vamorim
JavaEvangelist
[Avatar]

Membro desde: 21/11/2003 17:08:39
Mensagens: 481
Localização: Rio de Janeiro - RJ
Offline

Desculpem-me. Esbarrei no botão enviar




ao invés disso:


Vinci Pegoretti Amorim
http://vinci.blog.br
[Email] [WWW] [MSN] [ICQ]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Sim fica mais caro.

Pergunta: para que você *precisa* declarar uma variável dentro de um laço?


*dica: tem um botão "editar" em cima à direita de qualquer tópico seu

Former LIPE.
[ICQ]
rogeriop80
JavaEvangelist
[Avatar]

Membro desde: 20/04/2004 17:10:50
Mensagens: 313
Localização: Caçapava/SJC - SP
Offline

Lembre-se que cada variavel ou objeto declarado consome um espaço na memória.

Há também o tempo para cada nova alocação.

Rogério Peres Gomes
E TENHO DITO !
[WWW] [MSN]
vamorim
JavaEvangelist
[Avatar]

Membro desde: 21/11/2003 17:08:39
Mensagens: 481
Localização: Rio de Janeiro - RJ
Offline

Oh! Nunca tinha reparado esse botão!

Quando ao post, muitas fazemos coisas ineficientes a favor de elegância....

Vinci Pegoretti Amorim
http://vinci.blog.br
[Email] [WWW] [MSN] [ICQ]
aborges
GUJ Ranger
[Avatar]

Membro desde: 08/10/2003 11:44:19
Mensagens: 818
Localização: Caçapava - SP
Offline

vamorim wrote:Oh! Nunca tinha reparado esse botão!

Quando ao post, muitas fazemos coisas ineficientes a favor de elegância....


Vc acha elegante declarar variaveis dentro de LOOPS?

Linux é que nem sexo, quem não conheçe diz que dói
Alexandre Borges
[Email] [WWW]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

1) O teu programa nao tera performance afetada a ponto de ser notada. Alias, muito longe disso

2) Declarar as variaveis fora do loop, sendo que voce somente ira usa-las dentro dele, pode dar alguns problemas relacionados a escopo, uma vez que a var ficara disponivel para o resto do bloco de codigo sem necessidade.

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

PERAE PERAE PERAE!

Desde quando existe ALGUMA DIFERENCA entre declarar uma variavel num loop ou fora dela? O que doi nao eh declarar uma variavel, eh instanciar objetos, e mesmo assim nao doi tanto.

Pondo o meu na reta, aqui vai o codigo que eu usei como exemplo:



E aqui vai um belo javap -c no bichinho:



Nao sei se voces notaram, mas NAO FAZ A MENOR DIFERENCA. Ponto final na discussao.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
rogeriop80
JavaEvangelist
[Avatar]

Membro desde: 20/04/2004 17:10:50
Mensagens: 313
Localização: Caçapava/SJC - SP
Offline

cv wrote:


Nao sei se voces notaram, mas NAO FAZ A MENOR DIFERENCA. Ponto final na discussao.


Mas acho que não é bem isso, e se fosse assim


Mesmo pq da forma que vc colocou o For declara a variavel apenas uma vez.

Abraços.

Rogério Peres Gomes
E TENHO DITO !
[WWW] [MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

O custo de declarações locais é ZERO em termos de instruções utilizadas pela CPU para alocação de espaço. Outra coisa é o custo de inicializar essas variaveis.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

rogeriop80 wrote:Mesmo pq da forma que vc colocou o For declara a variavel apenas uma vez.


Uma variavel nao pode ser declarada mais de uma vez, ou voce teria um erro de compilacao (leia esta frase de novo caso em caso de viagem na maionese ). Ela pode ser inicializada uma unica vez, e escrita/lida quantas vezes voce quiser.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
vamorim
JavaEvangelist
[Avatar]

Membro desde: 21/11/2003 17:08:39
Mensagens: 481
Localização: Rio de Janeiro - RJ
Offline

cv wrote:Uma variavel nao pode ser declarada mais de uma vez (... ). Ela pode ser inicializada uma unica vez (...)


Então o que significa efetivamente fazer


Dei um javap - c no teste do rogeriop80 mais acho que ainda não me caiu a ficha...

Vinci Pegoretti Amorim
http://vinci.blog.br
[Email] [WWW] [MSN] [ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Bom, de acordo com o codigo do Rogerio:





Saida do javap, explicadinha:





Melhorou a queda da ficha?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Achei que cada vez que finzlizasse um loop, ele matava todas as variaveis.

Entao, qdo declaro no começo de um looping uma variavel X , ao voltar pro começo no proximo loop, essa variavel nao existisse mais...

Logo, ele sempre teria o mesmo numero de bytes ocupado em memoria...

Certo ?

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
vamorim
JavaEvangelist
[Avatar]

Membro desde: 21/11/2003 17:08:39
Mensagens: 481
Localização: Rio de Janeiro - RJ
Offline

Ficha? Ué, cadê ela? Acho que caiu por aí...
Faleu!

Vinci Pegoretti Amorim
http://vinci.blog.br
[Email] [WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team