PDA

View Full Version : Prestazioni programma mono vs multi thread [JAVA]


pippopamp
29-07-2008, 10:19
Salve a tutti, ho bisogno di un consiglio implementativo per il mio progetto.

Ho uno scheduler che accoglie centinaia di migliaia di pacchetti da processare; questi pacchetti provengono da sorgenti diverse e vengono memorizzate in un buffer condiviso tramite un metodo synchronized insertPacchetto(); tutti i pacchetti vengono memorizzati all'inizio del programma e poi l'esecuzione consiste nel processare questi pacchetti.

Volevo sapere se, secondo la vostra esperienza, il passaggio ad una implementazione multi-thread per la generazione dei pacchetti (cioè creare un thread per ogni sorgente, in modo da generare i pacchetti in parallelo) migliora o meno le prestazioni del programma?

Che ne pensate? Mi scuso se sono stato poco chiaro nella spiegazione, ma ho cercato di essere il + sintetico possibile. Grazie in anticipo a tutti coloro che mi vogliono dare una mano.

banryu79
30-07-2008, 08:51
Ciao,
non sono assolutamente un esperto ma ho visto che fin'ora non ti ha risposto nessuno e così ho pensato di provare a ragionarci su, anche se non ho esperienza nello specifico.


tutti i pacchetti vengono memorizzati all'inizio del programma e poi l'esecuzione consiste nel processare questi pacchetti.

Quindi la processazione dei pacchetti da parte dello scheduler viene avviata solo dopo che tutti i pacchetti sono stati ricevuti?


implementazione multi-thread per la generazione dei pacchetti (cioè creare un thread per ogni sorgente, in modo da generare i pacchetti in parallelo) migliora o meno le prestazioni del programma?

Se non ho capito male, stai cercando di migliorare le prestazioni nel senso di velocizzare la generazione dei pacchetti, e ti stai chiedendo se avere un thread per sorgente aiuterebbe in questo senso?

Attualmente hai N sorgenti che condividono 1 buffer unico sincronizzato (come hai scritto nel post).
Se il buffer è già sincronizzato immagino che sia perchè ogni sorgente appunto accede con un suo thread in scrittura (il metodo synchronized si chiama eloquentemente insertPacchetto())...

Dunque non capisco bene in che senso la generazione dei pacchetti dovrebbe essere resa multithread, temo mi sia sfuggito qualcosa...:stordita: