Newsgroup: it.comp.lang.c++
Titolo: ho bisogno di velocità: uso le std o riscrivo il codice in C?

devo ordinare, cercare, ecc... elaborare dati (moltissimi dati).
Pensate che posso appoggiarmi sulle std o che sia più veloce
(per il programma) che io riscriva anche le parti già implementate nelle std
(sort, vector...)
in C?
Perchè?
Grazie in anticipo, Mario.

 
perchè così non perdi tempo inutilmente.
-- 
"Come un nano sull'orlo di un orinale dovevo muovermi in punta dei piedi"

 Perchè?
Perché gli algoritmi della STL sono tra i migliori mai realizzati.
Prova ad esempio ad fare il sort degli elementi di un std::vector e a fare
meglio scrivendoti il quick sort in C!
Ti sfido a farlo. Puoi dire di metterci meno tempo? Ben che ti vada, finisce
pari!
Non dico che a volte non può capitare che un array sia più veloce di un
vettore (specie nel vettore ci metti classi passate per riferimento che
chiamano costruttori di copia o altri vettori nidificati), ma che se scrivi
bene il codice, usando certe accortezze, e utilizzando le strutture dati
giuste quando servono (compresi i classici array se ci sono le premesse per
farlo), è difficile che alla fine la differenza in termini di velocità sia
apprezzabile, salvo casi del tutto particolari ma che andando a vedere bene,
qualche volta il programmatore ha le sue colpe.
Spesso, scrivere in C e dimenticarsi degli anni di evoluzione che ci sono
stati, significa scrivere codice meno robusto e quindi meno affidabile.
Più spesso, capita che, una buona programmazione ad oggetti offre la
possibilità di realizzare algoritmi migliori e che alla fine girano più
velocemente.
Vai a leggerti la documentazione STL e guarda gli aspetti prestazionali e di
complessità degli algoritmi, vedrai che "è roba buona" !
Poi quello che alla fine conta, è l'aspetto critico del programmatore, ma
non bisogna farsi prendere dai pregiudizi che C è meglio di C++ perché se
uso le classi in mezzo c'è anche il flag settato, il controllo che a me non
serve o l'implementazione sprecona che fa perdere tempo. Questo è un
pregiuduzio che non aiuta a scrivere buon codice.
ciao.

 in C?
Riscrivi tutto in FORTRAN ...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg


 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 FabioMDF
Esperienza personale; ma, soprattutto, l'esistenza di librerie
altamente ottimizzate per la risoluzione di problemi di calcolo
numerico di ogni genere, di cui non conosco l'equivalente in C[++].
Mettiamo in chiaro le cose: io non amo il FORTRAN (sebbene abbia
cominciato con il FORTRAN II --- il FORTRAN IV esisteva da poco, ma
non era ancora diffuso).  Non uso FORTRAN da vent'anni.  E programmo
quasi esclusivamente in C++.  Quello che non faccio in C++ e' quasi
totalmente in C, e per finire c'e' qualcosina in awk, perl, shell, e
html.  Ma se, come l'OP, cercassi la soluzione di problemi numerici e
volessi la velocita', penserei subito al FORTRAN.
Se tu dovessi trovare la soluzione delle equazioni del moto di un
fluido in condizioni non stazionarie a che linguaggio penseresti?
Un altro parere: 
http://www.ibiblio.org/pub/languages/fortran/ch1-2.html



...che forse pero' e' un po' "di parte"...
In ogni caso, credo che piu' che i benchmark con relativi grafici, conti 
davvero l'*esperienza*, e pare che nel campo del calcolo numerico il 
Fortran sia nei fatti preferito, come si evince leggendo qua e la', e 
come anche tu hai confermato nel tuo post.
Ciao
Dan