Newsgroup: it.comp.lang.c
Titolo: Velocità di esecuzione -> confronto ANSI C con C++

Buona sera,
mi viene in mente un dubbio.
Ma un programma scritto in C e uno in C++ una volta compilati sono
ugualmente veloci?
O un linguaggio risulta migliore dell'altro in termini velocistici?
C'è un modo per fare la "gara"?
Un benchmark, non so...
Perdonate la mia profonda ignoranza, ma proprio non riesco a cogliere
se ci sono differenze.
Franco


Visto che (a parte poche eccezioni) un codice scritto in C può essere
compilabile con un compilatore C++, direi che la gara è tra
compilatori.
Se il codice non è -identico- allora è una gara tra programmatori.
Ciao!

 ugualmente veloci?
E' una domanda che non ha molto senso. Sarebbe pi� sensato chiedere se,
dato un determinato problema, affrontare l'implementazione della relativa
soluzione in C � pi� o meno conveniente rispetto al C++. E comunque nel
ritenere "conveniente" una implementazione in un determinato linguaggio
non ha senso considerare solo la velocit� di esecuzione, ma anche lo
sforzo implementativo e manutentivo. I linguaggi orientati agli oggetti
sono pi� costosi dei procedurali in termini implementativi (nel senso che
� richiesto pensare di pi� e progettare con cura tutti i vari "pezzi del
gioco") ma molto pi� convenienti in termini manutentivi. Sopratutto se si
tiene conto che � molto facile scrivere codice "confuso" con i linguaggi
procedurali. C'� sato chi in passato (credo fosse Alexandrescu?) ha
provato a stilare dei benchmark di varie soluzioni implementative per lo
stesso problema, sia in C che in C++, e quest'ultimo spesso veniva fuori
vincitore. Non ho link a quei benchmark purtroppo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Franco
Sostanzialmente si, forse il C ha performance leggerissimamemente
migliori ma mantenere codice C++ � pi� semplice.
dai un occhiata qua:
http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance.htm
micheg.

 Franco
....
Ho trovato un articolo piuttosto lungo ma anche molto esplicativo:
http://unthought.net/c++/c_vs_c++.html
che fondamentalmente dice che a parit� di implementazione dell'algoritmo
utilizzato le performance sono quasi identiche. (anche se in questo caso
specifico vince il C++)

 specifico vince il C++)
Grazie mille :-)
Se fossimo su Yahoo answers ti meriteresti la migliore risposta

 utilizzato le performance sono quasi identiche.
Cioe' dice che se compili lo stesso programma con lo stesso compilatore, 
ottieni le stesse performance? :D
Pleg

 C'� un modo per fare la "gara"?
Forse, l'unico modo per dare una risposta vagamente sensata al tuo quesito 
e' vedere di che programma stai parlando. Se ad es. e' un programma di puro 
number-crunching, e' assai probabile che la differenza tra C e C++ sia 
trascurabile rispetto ad altri fattori (ad es. l'ottimizzazione del 
compilatore, o il pattern d'accesso alla memoria).
Pleg

 Pleg
Ovviamente me lo aspettavo che un programma scritto in C e compilato
col compilatore C++ giri alla stessa maniera che compilato con quello C
++. Quello che fa la differenza è la diversità dell'approccio come
messo in evidenza in quell'articolo. La ricerca delle prestazioni poi
dipende moltissimo dal problema, da come è scritto il codice, ecc...
hai ragionissima Pleg, su tutto.
Ultimamente ho dovuto scrivere un programma per raccogliere dei dati
da certi file di testo (800Mb di files...) e l'ho scritto in Python.
Raffinandolo sono arrivato a farlo girare in 20 secondi circa.
Probabilmente in C avrei risparmiato moltissimo tempo in fase di
esecuzione ma né avrei perso moltissimo in fase di sviluppo, è molto
facile in python giocare coi files di testo.
Ma sedovessi scrivere un simulatore agli elementi finiti probabilmente
lo scriverei in C o in C++. Su questo genere di problemi credo che
valga la pena fare dei confronti, o almeno mi pare di aver capito così
dal tuo ragionamento. Se è così concordo al 100%. Ho ben capito?
Franco

 procedurali.
Non e' mai stato provato.
E' una generalizzazione errata e fuorviante.
Ci sono soluzioni adatte e soluzioni non adatte.
Il 'paradigma' non determina quanto adatta sia una soluzione.

 Ci sono soluzioni adatte e soluzioni non adatte.
Questa frase non ha senso: che cos'� una "soluzione non adatta"?
Una soluzione � una soluzione.


 code"). 
Provato da chi?
Non c'e' nessuna prova. Sono tutte opinioni. Non esiste nessuna prova 
che l'OOP sia ne' meglio ne' peggio.
Dipende tutto dall'orientamento della testa del programmatore.
Se la tua testa si trova meglio e fa meno scarabocchi con l'OOP, allora 
usi quello. Altrimenti usi altro.

 Provato da chi?
Da milioni di programmatori di questo pianeta che hanno sviluppato con il
paradigma strutturato per qualche decennio e hanno riscontrato pi�
facilit� nel disegnare il codice con il paradigma orientato agli oggetti.
I linguaggi orientati agli oggetti hanno una migliore espressivit� dei
linguaggi strutturati e questo � indubitabile. C'� molta letteratura in
proposito, � l� e la puoi leggere. Poi � ovvio che ci troviamo in un
mondo, quello dell'informatica, in cui esistono ed esisteranno sempre
scuole di pensiero, ma chi ritiene la programmazione orientata agli
oggetti migliore in termini di design del codice � in numero molto ampio.
E' oggettivo il fatto che a livello di progettazione del codice e di
disponibilit� di certe caratteristiche (ereditariet�, polimorfismo,
programmazione generica in certi linguaggi) sviluppare ad oggetti *�*
meglio, perch� consente di svolgere compiti complessi in maniera semplice
e sicura (vedi il paradigma RTTI). In programmazione non dipende *tutto*
dalla testa del programmatore, cos� come per svolgere un qualsiasi lavoro
manuale non dipende tutto dalla testa dell'operaio: � cruciale il modo in
cui � costruito lo strumento che usa.


 e sicura (vedi il paradigma RTTI).
Ti piace la programmazione ad oggetti? bene.
I problemi che risolvi tu sono risolti meglio da programmazione ad 
oggetti? Bene.
Tu e i tuoi problemi e' tutto cio' che esiste? no quindi identifica le 
tue opinioni come tali.

 E questa e' una prova secondo te?
Quello che io onestamente non capisco � come possa una persona con un
minimo di sale in zucca portare una discussione sul piano tecnico, in cui
ognuno � comunque sempre libero di avere le proprie opinioni, a livelli
tali. Come ci sei arrivato a Stalin, a Hitler e al geocentrismo medievale?
E poi "la pensavano come te"? ma come ti permetti di offendere a questo
modo? ma chi sei? ma chi ti conosce? stai calmo. Se sei prevenuto nei
confronti del tuo interlocutore faresti meglio a non intervenire nelle
discussioni. Il bello � che poi chi si prende la colpa dei flame sono io.
Qui il metodo scientifico non c'entra. Che cosa pretendi di dimostrare
scientificamente? tu stai chiedendo prove scientifiche laddove non ha
senso chiederne (il metodo scientifico si applica a tutt'altre questioni).
Che cosa si dovrebbe "provare"? Le prove ce le hai empiricamente,
osservando la societ� che ti circonda e vedendo come evolve. Il mondo
della programmazione ha subito un'evoluzione negli ultimi anni, passando
da un paradigma di programmazione strutturata ad uno ad oggetti. E questo
che la cosa ti piaccia o meno. Queste non sono miei opinioni, guardati
attorno. Ti ho gi� detto che esiste molta letteratura in merito,
istruisciti. Ci sar� un motivo per cui la stragrande maggioranza dei
linguaggi adoperati oggi per lo sviluppo sono linguaggi orientati agli
oggetti o no? te lo sei chiesto? non � forse perch� si ritiene questo
paradigma di programmazione un progresso rispetto al passato? Nessuno sta
negando che nello sviluppo di un sistema, poi, si possano usare pi�
paradigmi (se leggi i miei messaggi precedenti ti accorgi che ho detto la
stesa cosa) ma la tendenza generale � di abbandonare il paradigma
strutturato. Punto. Non risponder� ad altre offese.


[cut]
Si', e' quello che intendevo. Per il resto, concordo con Andrea Laforgia.
Pleg

 strutturato. Punto. Non risponder� ad altre offese.
Se ti senti offeso dopo che hai detto a me circa il 'sale in zucca' e 
l'istruzione, sei proprio nel torto.

 l'istruzione, sei proprio nel torto.
chi si � agitato credo sia solo e soltanto te...
hai tirato in ballo hitler e stalin?
cavolo...si vede che lo specchio a cui vuoi arrampicarti � bello liscio per 
arrivare a tanto...
sii umile...e rispetta le opinioni altrui...
 

 l'istruzione, sei proprio nel torto.
mhmh Ragazzi... Io mica volevo scatenare un flame, ho chiesto solo
un'opinione in merito
ad una piccola questione su cui mi sto documentando per puro hobby
informatico.
Francamente mi pare un po' fuori luogo aggredirsi così, voglio dire...
a ciascuno il suo.
Se decidessi un giorno di mettermi a scrivere un browser web in
assembly chi avrebbe il diritto di criticarmi? Ognuno scrive il codice
come meglio sa fare e come meglio può cercando di volta in volta la
maniera migliore e che semplifica la soluzione del problema.
Quello che conta non è il codice quello che conta e risolvere il
problema!
Se devo svolgere una simulazione di un circuito posso usare spice,
posso usare simulink, posso scrivere un simulatore ad hoc in C, ecc...
l'importante è che abbia i risultati in tempo per montare il
prototipo. Lo stesso credo che valga per tutti gli ambiti.
O sbaglio?

 assembly chi avrebbe il diritto di criticarmi? 
Ovviamente tu puoi fare quello che vuoi, se lavori da solo. Se lavori 
per altri o con altri, le cose cambiano parecchio. Non credo che nessuno 
ti pagherebbe per scrivere un browser web in assembler. E trovo 
difficile che qualcuno potrebbe collaborare ad un lavoro del genere.
E.


Era per portare un esempio... Lo so che quando si lavora con altri ci
sono molti più
vincoli nelle scelte tecniche.... Quello che volevo dire è che se un
programmatore preferisce un approccio piuttosto che un altro non vedo
che motivo c'è di aggredirsi a vicenda. Tutto qui, volevo smorzare i
toni... A sto punto se è per questo potrei scrivere
pure dei programmi in linguaggio COW... ahahah LoL XD
http://www.bigzaphod.org/cow/

 La pensavano come te anche ai tempi di Stalin e di Hitler.
Ok. In questo principio di flame e' gia' stato citato Hitler.
La legge rimane valida. <g>
-- 
-riko

 Io mica volevo scatenare un flame
Questo e' da dimostrare. Io di fatto vedo che il tuo tipico intervento
su un ng. e' del tipo X vs. Y, cosa e' meglio?
Tipicamente scegliendo bene una questione ampiamente dibattuta, su cui
ci si e' scannati per un decennio e tutto quello che poteva essere
scritto e' gia' stato scritto (compresi un centinaio di riferimenti ad
Hitler per argomento).
Dal momento che non e' la prima volta che lo fai, faccio pesantemente
fatica a credere nella tua buona fede. Vuoi che ricordi a tutti quando
sei arrivato su it.comp.java farfugliando dei "programmatori Python che
odiano i programmatori Java, perche'?". No, probabilmente non lo volevi.
-- 
-riko

On 15 Nov, 20:53, 
r...@despammed.com
 (Enrico Franchi) wrote:

Veramente michelangelo mi ha dato la risposta che cercavo e pleg mi ha
dato qualche altra dritta, non ho scatenato io la lite. Stavolta non
ho scatenato io la lite né l'ho fomentata.

 La legge rimane valida. <g>
Due sono le certezze nell'universo: la legge di Murphy, e quella di Godwin 
:D
Pleg

 Il 'paradigma' non determina quanto adatta sia una soluzione.
vorrei ricordare che e' opinione condivisa da molti, tra cui
Stroustroup, che
il C++ sia un linguaggio multiparadigma, non solo orientato agli
oggetti
my 2c