Newsgroup: it.comp.java
Titolo: prestazioni di Java

Salve,
sono uno alle primissime pagine del "Thinking in Java", ed ancora molti
aspetti di questo linguaggio mi sfuggono. Spero di non fare domande
sciocche.
Desidero sapere:
1) quanto Java č piů lento del C/C++;
2) se č possibile realizzare codice eseguibile autosufficiente che non
deve appoggiarsi ad eventuali run-time.
Grazie per l'attenzione.
Luigi

 deve appoggiarsi ad eventuali run-time.
Esistono sul mercato compilatori in grado di fare questo, mi sembra che
anche l'ultima release di Visual Studio di Microsoft  consenta la creazione
di un eseguibile.Però, si tratta di qualcosa che "tradisce" la filosofia di
Java.
Ciao,
Scorpio.


 deve appoggiarsi ad eventuali run-time.
Con alcuni compilatori è possibile. Però secondo me è inutile: perchè
penarsi di rendere Java come il C++ tenendosi tutte le limitazioni di Java?
Dubito che le Swing, anche se compilate nativamente, possano eguagliare le
prestazioni di un programma C che chiama direttamente le funzioni dell'OS...



Un esempio classico ma decisamente fuori luogo per un linguaggio OO. Potrei
scriverti il crivello di eratostene in Assembly con prestazioni ancora
superiori. E allora? Un test potrebbe essere un software che fa uso di memoria
dinamica, alloca molti oggetti e poi li distrugge, insomma un programma oo
reale. Nessuno scriverebbe mai il crivello in Java, come nessuno scrive quasi
più codice "Enetrprise" altro che in Java. Volendo usare C++, contornandosi di
librerie all'uopo (magari un garbage collector, ce ne cominciano ad essere
parecchi in giro), si potrebbe discutere di prestazioni, che probabilemnete,
penderebbero ancora a favore del c++, ma in percentuale molto minore e
bilanciate da tutta una serie di vantaggi. I Benchmark lasciano il tempo che
trovno, come quando esce un nuovo processore di Intel che vanta velocità
quadruple per la FPU, dopie per quell'altro ecc. Poi ci installi i soliti
programmi non cambi quasi niente.... i test vanno fatti nel mondo reale e nel
contesto giusto -  e Java si propone come una soluzione soprattutto nell'ambito
server - , non con i crivelli di eratostene.
Ugo
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home URL: 
http://www.ugolandini.net
Sample Work: 
http://www.sirena.lomb.cgil.it
Work Phone: 02/61860644-6-7
Cell Phone: 0347/6310749 - 0347/4783580
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

soprattutto nell'ambito server - , non con i crivelli di eratostene.
Concordo pienamente. Java non va bene per fare number crunching - ma
allora neanche C++ e' il piu' indicato. 
Per aggiungere una nota pratica, nella mia esperienza, con JIT o
postcompilatori vari, su applicazioni GUI classiche si riesce in media a
raggiungere prestazioni piu' o meno all'80/90% di equivalenti in C++.
Questo mantenendo le caratteristiche di produttivita' e manutenibilita'
superiori a cui Ugo accennava. Ovvio che usando solo un interprete di
bytecode le cose sono parecchio diverse. 
Resta inteso, in casi specifici e per sottosistemi particolari, la mia
soluzione resta codice nativo C++. 
Per quanto riguarda le prestazioni (e non le capacita' strutturali ed
espressive dei linguaggi) di Java vs. C++ ci sono buoni articoli, ad
esempio 
http://www.ncworldmag.com/ncworld/ncw-01-1998/ncw-01-jperf.html
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/

prestazioni di un programma C che chiama direttamente le funzioni dell'OS...
Intanto il confrono č C++/Java perchč il C++ č notoriamente + lento del C.
Poi tieni conto della possibilitą di tradurre java in C e compilarlo cosģ. Come
accade al C++ con Linux.
--
Ciao, Lorenzo