|
|
|
![]() |
|
Strumenti |
![]() |
#181 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
![]() Inoltre cari javisti spiegatemi una cosa ![]() ![]() Ultima modifica di Unrue : 02-01-2008 alle 13:44. |
|
![]() |
![]() |
![]() |
#182 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
io faccio fare tutto in un (ovviametne seguendo patter specifici)...è acnhe vero che io non faccio applicazioni grosse.....semplici programmini(per ora). comunque credo che da dati pratici la discussione si stia spostando su "ideologie". io credo che il tutto si possa riassumere così: C++ è più performate se lo sai scrivere a dovere, ma se conosci java e non devi per "forza di cose" usare c++, allora java è ottimo anche a livello prestazionale. ho sbagliato con la sintesi??
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#183 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
L'ho sentita e sperimentata più volte di persona
![]() ![]() Ultima modifica di Unrue : 02-01-2008 alle 13:57. |
![]() |
![]() |
![]() |
#184 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
s si sceglie, chiedilo a chi lo fà, non a me. io ti posso dire che secondo me può essere una scelta furba per alleggerire il sistema(usando i thread lo stesso spazio di memoria). poi, ripeto, ognuno la pensa come vuole.
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#185 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Quote:
__________________
![]() |
||
![]() |
![]() |
![]() |
#186 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
|
|
![]() |
![]() |
![]() |
#187 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() questo mi spieghi come fai a farlo sinceramente ![]() Lo puoi fare sicuramente in architetture come il Cell in cui decidi tu quali dati caricare nella memoria locale delle SPE, ma in un'architettura di tipo x86 non hai alcun controllo sulla cache (e vorrei ben dire!) e quindi qualsiasi supposizione vai a fare, a meno che il tuo programma non sia un piccolo kernel dedicato che faccia solo quell'operazione, non è valida dato che varia al variare delle condizioni in cui si trova il processore.
__________________
![]() |
|
![]() |
![]() |
![]() |
#188 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
![]() Io personalmente non ho mai fatto ottimizzazioni a livello di cache, però conosco persone che lo fanno, quindi è possibilissimo ![]() |
|
![]() |
![]() |
![]() |
#189 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
![]() Devo quindi pensare che il problema stia dalla mia parte, anche se ho fatto esperimenti parecchie volte prima di postare, onde evitare brutte figure. Avevo anche messo la delete[]. Cmq penso sia inutile postare anche il codice Java, visto che e' proprio uguale. Devo capire come mai ho queste prestazioni. Non per fare il cocciuto, ma resto ancora convinto di quanto scritto prima: Java (come altre piattaforme managed) hanno la possibilita' di fare ottimizzazioni a livello globale, certamente ad un livello piu' alto di quanto possa fare C++. Ovviamente con C++ si puo' fare tutto quello che fa Java, naturalmente scrivendolo da zero...
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#190 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
La branch prediction del processore usa delle euristiche che vanno bene nel circa il 95% dei casi nelle architetture moderne, ma il caso proposto da jappilas mi pare proprio uno di quei casi in cui tale tecnica non funziona correttamente, portando ad uno stallo della pipeline in caso di errore di predizione.
__________________
![]() |
|
![]() |
![]() |
![]() |
#191 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se in C++ facessi tante "new char [100]" dimenticandomi la delete avrei un memory leak di 2MB, invece il programma C# che già di per se parte con 25MB arriva alla fine del'operazione ad occupare 70MB che non vengono mai rilasciati. Insomma non saranno memory leak ma 70MB per inviare 4 cavolate in seriale mi sembrano una esagerazione. |
|
![]() |
![]() |
![]() |
#192 | |||
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
Quote:
qualsiasi cosa è fattibile avendo a disposizione risorse sufficienti, nel senso di tempo e capacità del programmatore impiegato, e tenendo conto che molto probabilmente l' ottimizzazione spinta renderà il codice meno leggibile e più difficilmente manutenibile (il che si rifletterà in un aumento dei costi della soluzione a lungo termine) - il punto è: considerando ciò, ne vale la pena? in certi casi può effettivamente valere la pena, ma negli altri risulterà più conveniente scrivere codice più pulito e leggibile che altamente ottimizzato, e affidarsi a strumenti di ottimizzazione dinamica ... Quote:
![]() Quote:
con un solo thread, un' applicazione interattiva consisterebbe in un loop in cui si effettuerebbe un polling degli eventi in ingresso e un aggiornamento della struttura dati interna e della presentazione visuale in base a questi eventi - in occasione dell' invocazione di una system call sincrona o dell' ingresso in una lunga routine di calcolo, l' intera applicazione smetterebbe di rispondere all' input dell' utente fino alla terminazione di queste per questo motivo è prassi comune per applicazioni di un certa complessità creare thread separati per ridurre la "modalità" dell' interfaccia, ma questo "ad alto livello" è indipendente dal linguaggio ... il meccanismo con cui ciò viene implementato, e il modo di impiegarlo invece possono variare ampiamente rispetto al linguaggio, ad estensioni del linguaggio (ad esempio openMP), o al toolkit grafico (già considerando il C++ esistono *se non ricordo male* toolkit in cui un thread nascosto è creato internamente all' inizializzazione della libreria, e altri in cui la gestione dei messaggi e degli eventi gui è thread-safe, quindi viene supportato un event/message loop per_thread, quindi è possibile adottare un design più scalabile per la propria applicazione )
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 02-01-2008 alle 15:13. |
|||
![]() |
![]() |
![]() |
#193 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
|
|
![]() |
![]() |
![]() |
#194 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Nelle applicazioni REALI tali differenze sono, a parte casi particolari, negligibili dato che in un sistema reale non è solo il tuo programma a girare ma gira una quantità enorme di servizi e il tuo programma, compilato staticamente, non potrà sapere a priori quale tipo di ottimizzazione darà i risultati migliori. Un'altra tecnica implementata nella JVM a partire da Java 6 è la seguente: Quote:
La cosa interessante da notare è che *corregge* anche degli eventuali errori di un programmatore. Se un oggetto o un blocco di codice è dichiarato synchronized, ma viene utilizzato solo all'interno di un unico thread in fase di esecuzione, allora le operazioni lì definite vengono eseguite senza sincronizzazione.
__________________
![]() |
||
![]() |
![]() |
![]() |
#195 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Conci/Tommino
Sto cercando di capire se e dove sbaglio. Vorrei provare (se possibile) ad avere una base comune. E' possbile x voi rifare l'esperimento con le due sole variabili a,b? (i.e. eliminare tutto cio' che riguarda buf). Sul mio computer, questo determina un bel vantaggio di Java. Sarebbe bello vedere gli stessi risultati da un'altra parte, visto che comincio a sentirmi solo ![]() Ripeto mia configurazione: Win XP SP2 1.7 GHz 1Mb RAM
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#196 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#197 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#198 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Un oggetto, quando non viene + utilizzato, allora viene automaticamente deallocato. Gli unici problemi in Java ci possono essere quando tra i campi di una classe ci sono strutture aventi la funzione di repository di dati o di cache. In quel caso, mio pare anche *ovvio* che debbano essere implementati dei meccanismi per gestire correttamente la cache o per rimuovere i dati non + necessari. Quindi non c'entra niente fare elements[size] = null (che tra l'altro non è neanche semanticamente corretto perchè al + dovrebbe essere elements[i] = null ![]() Tra l'altro, se non erro, mi pare che sia anche sconsigliato porre a null un oggetto dato che si complica inutilmente il codice e si incasina di + il lavoro del GC.
__________________
![]() |
|
![]() |
![]() |
![]() |
#199 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Almeno partiamo davvero da una base comune ![]() In ogni caso gcc 4.1.3 su Linux e Java 1.6. Il sistema è un Core 2 Duo a 3.2 Ghz. |
|
![]() |
![]() |
![]() |
#200 | |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Colgo la palla al balzo per insinuarmi nella discussione, e a proposito di gestione della cache faccio notare che esiste un paper a riguardo. paper: http://citeseer.ist.psu.edu/prokop99cacheobliviou.html wikipedia: http://en.wikipedia.org/wiki/Cache-oblivious_algorithm Avvertimento: il paper è di quelli da mal di testa! edit: c'è anche un paper più umano (sembra)... http://www.dunkel.dk/thesis/
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers Ultima modifica di shinya : 02-01-2008 alle 15:25. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:28.