|
|
|
|
Strumenti |
30-12-2007, 11:40 | #81 | ||||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
Quote:
Quote:
Se nel ciclo for ci metti delle new (e delle delete nell'equivalente C++) il codice dell'applicazione java avrà una new che comporta decisamente più operazioni per via della struttura ad oggetti propria di Java e l'assenza totale del codice di deallocazione che non è a carico del programma, ma di una entità terza: il GC. Quote:
Quote:
E se anche è stato inserito nello standard Blue Ray, bisogna anche ricordarsi che serve l'accompagnamento di ben 256MB di RAM. |
||||
30-12-2007, 11:40 | #82 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
Quote:
|
||
30-12-2007, 11:47 | #83 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
Quote:
Ma il Visual Studio 200X è scritto in .NET infatti anche lui è leggero come una piuma, poi qualcuno mi deve spiegare cosa cavolo viene caricato in memoria e mai scaricato se l'occupazione cresce proporzionalmente al tempo di utilizzo anche se si cambia progetto. Magari non ha memory leak ma l'effetto è lo stesso. |
|
30-12-2007, 11:49 | #84 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Ma soprattutto si continua a parlare di consumo di risorse quando il tema in oggetto era la VELOCITA' DI ESECUZIONE.
Pur con tutto il garbage collector che funziona dietro le quinte e il compilatore JIT, mi sembra che i risultati siano notevoli per Java rispetto al C++.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
30-12-2007, 11:56 | #85 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
|
30-12-2007, 12:44 | #86 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Potrebbero anche assumere, come valore, il riferimento all'"oggetto null" della classe, come abbiamo discusso prima.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
30-12-2007, 12:46 | #87 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
30-12-2007, 12:52 | #88 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1816
|
Quote:
Un difetto di questa soluzione e' che hai una doppia indirezione, a naso risolvibile con l'uso di tagged pointers. Piu' rognoso il fatto che in questo modo sei obbligato a costruire gli oggetti tutti in una botta, visto che in Java non puoi chiamare funzioni/metodi in piu' riprese, e il linguaggio non offre, per quel che ne conosco io perlomeno, strumenti sufficientemente snelli per simularne il comportamento.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
30-12-2007, 12:54 | #89 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
Quote:
Il problema è che nessuno è riuscito a capire dove stesse il problema. |
|
30-12-2007, 13:16 | #90 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
Quote:
Se dopo un ora che sto sviluppando un progetto C# l'IDE mi occupa 150MB e passo ad un progetto C++ quei 150MB non cambiano di una virgola. Se invece parto direttamente con il progetto C++ l'occupazione di memoria generalmente non va oltre gli 80MB. Cosa porta il GC a non deallocare tutta quella ram? Si tratta di progetti profondamente differenti per cui tutto l'eventuale caching dei dati non è riusabile e quindi dovrebbe essere deallocato. Siccome questo non accade è perfettamente analogo ad un memory leak, visto che non recupererai mai quella memoria fino alla chiusura dell'IDE. |
|
30-12-2007, 13:58 | #91 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1816
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
30-12-2007, 14:48 | #92 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53968
|
Imho state mettendo di mezzo troppo spesso il GC e i memory leak...per realizzare un GC in C++ con un reference count ci vogliono 10 minuti. Inoltre il C++ ha degli strumenti chiamati smart pointer (come auto_ptr definito nella std library) che vengono in aiuto ai programmatori sfaticati...
Il problema è sempre il solito...sono in pochi a programmare in vero C++...ma c'è sempre il retaggio del C che fa in modo che i programmatori si complichino la vita da soli. Quindi tornando alle prestazioni: un compilatore JIT ha esattamente le stesse potenzialità di generare un codice altrettanto efficiente di quello di un compilatore tradizionale...quindi a parte il primo run (che può essere o meno interpretato), le velocità si equivalgono. Su codice ripetitivo è chiaro che l'impatto che può avere il primo run va sempre più assottigliandosi. L'unica differenza è che sul codice C++ è più facile fare fine tuning e magari tirare fuori qualche punto percentuale in più di prestazioni. L'impatto della VM sulla quantità di memoria usata complessivamente è importante, chiaramente questo può essere o meno un parametro indicativo, dipende dal tipo di applicazione e da dove deve girare. |
30-12-2007, 15:17 | #93 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4447
|
Secondo me, la velocità di un programma, più che dal linguaggio dipende da come si imposta il codice. Se è impostato bene, senza inutili sprechi di risorse, state tranquilli che l'applicazione gira veloce. Ormai quasi tutti i linguaggi hanno ottime prestazioni, altrimenti non li userebbe nessuno. Molti programmatori si fermano con lo sviluppo quando l'applicazione gira. Ma non basta, il fatto che giri è solo il primo passo. Successivamente ci dovrebbe essere un'accurato profiling per capire dove e come si può velocizzare il codice. Quanti fanno il profiling del codice? Ben pochi direi..
Vi faccio un esempio stupido: nell'applicazione che sto sviluppando adesso sto effettuando il profiling. Ebbene, con mio grandissimo stupore, ho notato che c'era una funzione che occupava il 70 % del tempo totale!! Sapevo che occupava tempo, ma non pensavo così tanto. Allora ho preso tale funzione, l'ho ottimizzata a dovere ed adesso il codice vola Tale funzione adesso ne occupa solo il 35% Se mi fermavo con lo sviluppo al fatto che girasse, non immagino quanti calcoli avrei fatto fare alla CPU inutilmente ! Ultima modifica di Unrue : 30-12-2007 alle 15:24. |
30-12-2007, 15:21 | #94 | |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
E' uno stralcio del capitolo del libro di Bloch...manca la parte rivisitata del codice, dove impone a null l'elemento liberato dall'array nel metodo 'pop'. Cmq c'è un pochino di spiegazione e si dovrebbe capire... A me non fa tanto incazzare che esistano NullPointerException...mi fa incazzare che ci siano una serie di eccezioni non "gestite" in java...tipo questa, o ArrayIndexBlaBlaBla... cioè sono errori o no?? Se sono errori devi killare il programma nel modo più vistoso possibile... come se ci fosse un assert(false). E invece certe cose si scoprono inevitabilmente quando si va in produzione, si guarda il log e si scoprono i NullPointerException che prima ti erano sfuggiti perchè il programma "tanto andava". Ecco, il concetto di unchecked exception non mi piace per niente... @cionci: Grazie per aver ricordato auto_ptr! Non li vedo mai usare da nessuno sfortunatamente. C++ dev'essere un linguaggio cosi vasto che nessuno ha ancora cominciato ad usarlo...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers Ultima modifica di shinya : 30-12-2007 alle 15:25. |
|
30-12-2007, 15:26 | #95 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Se un'applicazione funziona e la sua velocità d'esecuzione è soddisfacente, non la tocco più. Ormai m'interessa risolvere problemi, non trovare una soluzione per forza di cose "ottimale".
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
30-12-2007, 15:28 | #96 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53968
|
|
30-12-2007, 15:29 | #97 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4447
|
Beh, questo è ovvio. Non ha senso perdere un mese per cercare di migliorare le prestazioni di 1 %. Ma difficilmente un'applicazione gira a dovere fin da subito. Ma comunque almeno un profiling lo farei. Giusto per avere un'idea. Magari il codice per una stupidaggine perde un sacco di tempo, e allora perchè non correggerla?
|
30-12-2007, 15:30 | #98 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Perché?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
30-12-2007, 15:31 | #99 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Il tempo risparmiato preferisco spenderlo su altri progetti oppure per aggiornarmi...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
30-12-2007, 15:32 | #100 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4447
|
Quote:
Però spesso non è mica facile dire se le prestazioni sono sufficienti. E magari il codice sembra girare veloce, e poi sotto determinate condizioni va lentissimo. Può capitare. |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:58.