AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Ottimizzazioni inutili?

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
CarMas
Guest





PostPosted: Tue May 16, 2006 11:07 am    Post subject: Ottimizzazioni inutili? Reply with quote



Chiedo un consiglio agli esperti!
Ho una parte di codice che normalmente e' fatta cosi':

RetType retValue = metodo( ... );
elabora(retValue);

considerato che e' all'interno di un ciclo for, che quindi lo invoca
molte volte, ho pensato di cambiarlo cosi':

RetType retValue=null;
for( .... ) {
retValue = metodo( ... );
elabora(retValue);
}

questa ottimizzazione ha senso? cioe', mi fa effettivamente risparmiare
dal punto di vista della "memoria occupata", mi evita allocazioni,
lavoro del gc, ecc?

Per ultimo, se cambio le due righe in questo modo:

elabora( metodo( ... ) );

cambia qualcosa o sotto succede come prima?

Grazie mille
CarMas
Back to top
Manuel T
Guest





PostPosted: Tue May 16, 2006 1:07 pm    Post subject: Re: Ottimizzazioni inutili? Reply with quote



CarMas ha scritto:
Quote:
cambia qualcosa o sotto succede come prima?

Tutto uguale, tanto è vero che spesso eclipse suggerisce di spezzare la
dichiarazione in due righe.
Back to top
Delvy
Guest





PostPosted: Tue May 16, 2006 2:07 pm    Post subject: Re: Ottimizzazioni inutili? Reply with quote



Manuel T ha scritto:
Quote:
CarMas ha scritto:
cambia qualcosa o sotto succede come prima?

Tutto uguale, tanto è vero che spesso eclipse suggerisce di spezzare la
dichiarazione in due righe.

Non cambia niente in quanto le due forme usate alla fine restituiscono
lo stesso identico bytecode.
A mio parere la forma estesa è più elegante e leggibile, poi è una
questione di gusti.

Delvy
Back to top
Claudio Nieder
Guest





PostPosted: Tue May 16, 2006 6:07 pm    Post subject: Re: Ottimizzazioni inutili? Reply with quote

Hi,

in genere ottimizazioni di questo tipo semplice non valgono la pena,
perche le operazioni contenute nei tuoi metodi sono molto più complessi
di un semplice a=b;

Quote:
dal punto di vista della "memoria occupata", mi evita allocazioni,

La memoria per la variabile "retValue" viene allocata una sola volta, a
meno che lo scrittore di javac non sia stato un'ultra-principiante.

La memoria per l'oggetto che viene passato da metodo() ad elabora() viene
allocato in metodo() ed e fuori controllo in questo punto. Li dipende, per
farti un esempio semplice, se hai una situazione tipo

class X() { Type metodo() { ... return new Type(somedata); } }

dove viene prodotto un nuovo Integer ogni volta, Oppure

class X() { Type t=new Type(); Type metodo() { t.set(somedata); return t; } }

dove use sempre la stessa instanza di t e cambi solo degli valori semplici.

Quote:
elabora( metodo( ... ) );

cambia qualcosa o sotto succede come prima?

Semmai e più efficiente l'ultimo, perche cosi il risultato viene passato
direttamente alla funzione elabora. Però penso che i compilatori di oggi
siano in grado di trovare la stessa soluzione anche se usi le altre
varianti.

Per sapere se c'é differenze e se é abbastanza grande da giustificare
di pensarci su, misura il tempo:

long t0=System.currentMillis();
RetType retValue=null;
for( .... ) {
retValue = metodo( ... );
elabora(retValue);
}
t0=System.currentMillis()-t0;
System.out.println("Tempo impiegato="+t0+"ms");

Misure 3-4 volte questa variante e 3-4 volte la variante

elabora( metodo( ... ) );

e poi saprai se vale pensarci su o no.

claudio
--
Claudio Nieder, Kanalweg 1, CH-8610 Uster, Tel +41 79 357 6743
yahoo messenger: claudionieder aim: claudionieder icq:42315212
mailto:private (AT) claudio (DOT) ch http://www.claudio.ch
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.