Java vs C++ per algoritmi

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Java vs C++ per algoritmi

Messaggio da Szat »

Ciao a tutti

inutile dire che non avrebbe senso far scontrare java con C++ senza inquadrare il campo di utilizzo...

Ma se uno ha bisogno di scrivere algoritmi numerici cosa potrebbe usare tra Java e C++?

In ultimo le prestazioni: alla luce delle nuove virtual machine e dei nuovi hardware Java è ancora così lenta come poteva essere in passato?

Grazie in anticipo

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: Java vs C++ per algoritmi

Messaggio da raffaele181188 »

Algoritmi numerici del tipo? Ho letto recentemente che, in molti benchmark che utilizzano _SOLO_ calcoli Java è addirittura più veloce del C++. Appena posso linko
Va anche detto che per il puro scopo computazionale Java non è preso in considerazione di solito

Se vuoi conoscere empiricamente come va Java sul tuo computer (così da poter fare un paragone) scaricati NetBeans e giocaci un po'. E' tutto in Java, ed è l'unico programma di un certo livello (tra quelli che conosco) ad usare swing per l'interfaccia. Quindi pure java code

edit: Ecco due link. Ma secondo me lasciano il tempo che trovano...
http://kano.net/javabench/
http://www.idiom.com/~zilla/Computer/ja ... hmark.html

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Java vs C++ per algoritmi

Messaggio da Szat »

raffaele181188 ha scritto:Algoritmi numerici del tipo? Ho letto recentemente che, in molti benchmark che utilizzano _SOLO_ calcoli Java è addirittura più veloce del C++. Appena posso linko
Va anche detto che per il puro scopo computazionale Java non è preso in considerazione di solito
Wow!

Direi cose del tipo integrali numerici, equazioni differenziali, sistemi lineari (piusttosto grandi), sistemi di equazioni differenziali e cose simili.
raffaele181188 ha scritto: Se vuoi conoscere empiricamente come va Java sul tuo computer (così da poter fare un paragone) scaricati NetBeans e giocaci un po'. E' tutto in Java, ed è l'unico programma di un certo livello (tra quelli che conosco) ad usare swing per l'interfaccia. Quindi pure java code

edit: Ecco due link. Ma secondo me lasciano il tempo che trovano...
http://kano.net/javabench/
http://www.idiom.com/~zilla/Computer/ja ... hmark.html
Si netbeans lo conosco, ma preferisco eclipse. Comunque va abbastanza bene, non ho grandi rallentamenti. Ma anche eclipse è in java giusto? Solo che non usa swing

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: Java vs C++ per algoritmi

Messaggio da shark1500 »

Io mi butterei sul C/C++, non penso siano paragonabili in termini di prestazioni (non ho letto gli articoli per mancanza di tempo, parlo per esperienza personale)

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Java vs C++ per algoritmi

Messaggio da absinthe »

se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java. se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice

M

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Java vs C++ per algoritmi

Messaggio da Szat »

shark1500 ha scritto:Io mi butterei sul C/C++, non penso siano paragonabili in termini di prestazioni
Anche ai tempi odierni?

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Java vs C++ per algoritmi

Messaggio da Szat »

absinthe ha scritto:se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java.


Troppo lenti?
absinthe ha scritto: se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice
M
Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.

Python? La sua libreria standar è paragonabile a quella di java?

Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: Java vs C++ per algoritmi

Messaggio da ulisse89 »

Io sto studiando adesso il java all'università e ci stanno facendo una testa così che ormai con i nuovi processori, la differenza in quanto a velocità tra una programma in C e uno in java, non è così tanta. Però d'altra parte io penso che se è un programma per solo calcolo matematico, va ancora bene il C.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2903
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Java vs C++ per algoritmi

Messaggio da 414N »

Szat ha scritto:
Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.
Scilab permette di specificare proprie routine in C o Fortran.
Ma la tua è una domanda generica o stai scegliendo verso quale linguaggio orientarti per implementare degli algoritmi numerici "esotici"?

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: Java vs C++ per algoritmi

Messaggio da raffaele181188 »

Credo anch'io il C

Anch'io preferisco Eclipse, però ti ho scritto di provare NetBeans perchè usa le swing quindi è proprio tutto java e quindi puoi farti un'idea molto precisa di come vada un programma bello pesantuccio scritto per intero in quel linguaggio. Eclipse usa lo swt che è sensibilmente più veloce

Avatar utente
puzuma
Linux 2.x
Linux 2.x
Messaggi: 482
Iscritto il: mar 4 lug 2006, 17:14
Nome Cognome: Stefano Salvador
Slackware: current
Kernel: 2.6.32.2
Desktop: KDE 4.4.0
Località: Udine
Contatta:

Re: Java vs C++ per algoritmi

Messaggio da puzuma »

dalla java vm 1.4 in poi le prestazioni di java sul calcolo puro sono paragonabili a quelle del C se non migliori (anche se fortran e altri linguaggi dedicati sono ancora la scelta più performante), da un occhiata a questo articolo che mette a confronto java con il codice prodotto da molti compilatori:

http://www.idiom.com/~zilla/Computer/ja ... hmark.html

per il discorso swing/swt non è vero che le swing sono più lente, l'unico vantaggio delle swt è quello di avere un look & feel integrato con il sistema e migliori font (anche questa argomentazione è in parte superata), in certe circostanze le swing sono adirrittura più veloci (sotto linu ad esempio ...), guarda quà:

http://cosylib.cosylab.com/pub/CSS/DOC- ... arison.pdf

infine per il discorso real-time, java non è nato per questo ambito in quanto il garbage collector introduce delle latenze non prevedibili, del resto questo non mi sembra il tuo caso (e comunque dovresti usare anche un sistema operativo real time).

l'unica vera differenza tra C e Java è il consumo della memoria, però attenzione a programmare bene in C altrimenti questo vantaggio te lo giochi subito.

IMHO usa il linguaggio che ti fornisce il maggior numero di librerie già pronte e testate per lo scopo che ti sei prefisso, alla fine tra C e Java credo sia ormai solo una questione di gusti.
The quiet ones are the ones who change the world. The loud ones only take the credit.

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: Java vs C++ per algoritmi

Messaggio da raffaele181188 »

Offtopic: @puzuma
La maggior parte di quei test non sono significativi, in quanto disegnano rettangoli e altre cose base che non mettono in evidenza la cosa
Swing è un layer scritto in Java sopra la libreria di interfacciamento AWT
SWT, invece, è la "bella copia" by IBM delle AWT, e per le operazioni di painting mappa i componenti su quelli nativi (come fa AWT). Il LAF varia da piattaforma a piattaforma.
In Swing le cose sono diverse, in quanto tutti i LAF sono implementati in Java e viene fatto affidamento al codice nativo (AWT tramite JNI) solo per le funzioni base (come i rettangoli di prima). Infatti, usando swing, si può riprodurre qualsiasi LAF supportato su qualunque OS perchè fa tutto parte delle swing (quindi i LAF, pure se molto somiglianti, sono delle imitazioni) a parte quello di Windows (come al solito). Swing deve essere per forza più lento di SWT, perchè prevede un layer in più. Del resto, io noto che sui miei computer Eclipse è molto più reattivo di NetBeans

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Java vs C++ per algoritmi

Messaggio da Szat »

414N ha scritto: Scilab permette di specificare proprie routine in C o Fortran.
Ma la tua è una domanda generica o stai scegliendo verso quale linguaggio orientarti per implementare degli algoritmi numerici "esotici"?
Ho capito (tenendo presente che non so il Fortran). Non ho in mente niente di particolare, solo sto cercando un linguaggio o un framework per risolvere eventuali problemi che potrei incontrare, torna sempre utile.

E dopo aver studiato un po' di java, C++ e un po' di teoria degli algoritmi non ho la più pallida idea di cosa utilizzare.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2903
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Java vs C++ per algoritmi

Messaggio da 414N »

Szat ha scritto: Ho capito (tenendo presente che non so il Fortran). Non ho in mente niente di particolare, solo sto cercando un linguaggio o un framework per risolvere eventuali problemi che potrei incontrare, torna sempre utile.

E dopo aver studiato un po' di java, C++ e un po' di teoria degli algoritmi non ho la più pallida idea di cosa utilizzare.
Allora, secondo me, ti conviene orientarti verso una piattaforma come Matlab/Scilab e il loro linguaggio di scripting (non molto dissimile).
In questo modo puoi concentrarti solo sul tuo problema e non sui meccanismi intrinseci del linguaggio (leggi puntatori, gestione del heap o altre amenità) che rischiano di deviare la tua attenzione dal problema in sé verso le problematiche di implementazione.
Se poi vuoi comunque provare la via della programmazione, esistono già alcuni framework per alcuni linguaggi.
Per esempio:SciPy, per Python; qwt, che si appoggia a qt per il plotting di dati tecnici/scientifici etc.

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Java vs C++ per algoritmi

Messaggio da absinthe »

Szat ha scritto:
absinthe ha scritto:se hai bisogno di lavorare il real-time usa il c niente roba object oriented nè c++ nè java.


Troppo lenti?
sì. te lo dico per esperienza personale: stiamo sviluppando un applicativo realtime per un macchinario di misura basato su visione artificale. abbiamo margini stretti di manovra: 600 millisecondi per scattare 8 foto 1024x768 elaborarle estrarre i dati sensibili , triangolare tali dati, eseguire le operazioni trigonometriche/algebra vettoriale necessarie e dare un output a schermo. solo il c ce la fa! è riesce a faròlo anche su un catorcio come win xp pro con _tutti_ i servizi settati in avvio a _default_. qundi niente OS real-time o settaggi particolari che l'utente medio/basso non conoscerebbe (il target è un operaio di officina meccanica _non_ tenuto ad avere competenze di informatica su alcun livello!)
absinthe ha scritto: se non vai in real time python o matlab/scilab/octave vanno benissimo e ti risparmi un sacco di righe di codice
M
Non so usare ne matlab ne octave anche se li conosco. Ho usato per un sacco di tempo Mathematica e un po' Root del Cern.

Python? La sua libreria standar è paragonabile a quella di java?
con numpy e scipy vai più o meno alla velocità di matlab e _non_ è compilato o compilato jit. è interpretato puro con una community immensa e un sacco di IDE per sviluppo/debugging. io un pensiero ce lo farei. se poi il problema è anche la curva di apprendimento e conosci gà altri strumenti allora usa quelli che sai. tra java e c++ non saprei che dirti: mai usato java (l'ho sempre trovato troppo cervellotico per me)

M

Rispondi