Newsgroup: it.comp.java
Titolo: Prestazioni

Qualcuno ha idea del perchè in una applet che usa delle immagini le
prestazioni decadono
in maniera impressionante una volta finito di caricarle???
Mentre le carica e sono a metà ad esempio, tutto fila velocissimo...
- Pietro -

 wrote:

con Explorer 4.x ? Ho notato anch'io, credo sia se usi la doppia
bufferizzazione  e non rilasci correttamente le risorse di sistema (gli
oggetti Graphics); si tratta comunque di "errori" nel programma, perche' non
andrebbero definiti nello stack ma come variabili membro ;
--
Greetings, Alessandro
http://www.esalab.it
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

 andrebbero definiti nello stack ma come variabili membro ;
Grazie, scusami ma è poco che programmo in Java...non mi sono mai preoccupato
troppo
del rilascio delle risorse, Java non ha il Garbage Collection automatico?
Comunque in effetti uso il double buffer (disegno tutto offscreen e poi faccio
un blit nella paint()).
Esattamente quel'e' la strada + corretta (e veloce :-))
Grazie
- Pietro -

Dimenticavo: eseguendo il profiling dell'applet con OptimizeIt! 3.0 mi dà un
casino di allocazioni
di oggetti .awt.rectangle di dimensioni uguali a quelle dell'applet....boh!
- Pietro -

 Esattamente quel'e' la strada + corretta (e veloce :-))
definisci l'oggetto Graphics fuori dal metodo paint (il rilascio di questo
oggetto e' molto pesante, deve deallocare delle risorse di sistema e non e'
neanche garantito che riesca a farlo)


 wrote:

che cos'e' l'OptimizeIt! 3.0 ???


 - Pietro -

e' un profiler java, l'ho trovato abbastanza buono (avevo provato Jprobe ma è
scaduto, di optmizeit! si trova il crack:-)
non ricordo la URL, ma se fai un search su altavista (e poi su Astalavista) trovi
tutto :-p
ciao
- Pietro -


 Finchč carica ste maledette immagini schizza a 3000 all'ora, appena le


Se hai voglia posso mandarti in email il sorgente dell'applet.
Mi sarebbe molto utile scovare il collo di bottiglia...
Grazie
- Pietro -

 Mi sarebbe molto utile scovare il collo di bottiglia...
prova a vedere quante volte richiami il metodo paint() (fai una println() con
un contatore); non e' che hai messo un thread che lo richiama in
continuazione ? comunque prova con netscape, vedrai che sono tutte altre
prestazioni (anche se il caricamento dell'immagine da' problemi, ossia il
metodo getImage() e similari non funzionano fin tanto che non metti tutto in
un jar)


 un jar)
Ho un solo thread credo, che chiama se stesso come in tutti gli esempi sun che ho
visto...
Thread.currentThread = new Thread(this);
in ogni caso non ho un thread separato per la paint()..
- Pietro -

 Thread.currentThread = new Thread(this);
non mi e' molto chiaro. hai scritto queste linee nel codice ? e perche' ?
implementi runnable ? se si', nel metodo run richiama spesso sleep()
--
Greetings, Alessandro
http://www.esalab.it
Pesaro, Italy


ti scrivo il mio metodo run(); in effetti quella linea non c'e'... almeno
nell'ultima versione...
public void run()
{
 Thread thisThread=Thread.currentThread();
 while (esecutore == thisThread)
 {
  //qui dentro fa alcune cose con un contatore
  repaint();
 }
}
- Pietro -
ps: a che serve chiamare sleep() nella run(), non rallenta?

 ps: a che serve chiamare sleep() nella run(), non rallenta?
rallenta il thread, ma aumenta conseguentemente l'esecuzione del resto del
programma; credo che il tuo problema di lentezza sia li'


Cacchio è vero! Mettendo Thread.sleep(5); tutto gira più fluidamente....
Grazie!
- Pietro -