Newsgroup: it.comp.lang.c++
Titolo: Aiuto velocità

Ho bisogno di un aiuto, non guardate il codice come c++ builder
altrimenti sarei OT, infatti xò non chiedo aiuto su questo,
ma chiedo aiuto per velocizzare e magari di molto questa procedure in
c++;
Spiego il mio problema:
  Leggo i dati da una tabella e li metto in una griglia(quindi colonne e
righe).
 Arrivo al dunque:
  s è un vettore che contiene tutti i dati di intenstazione   della
griglia
 Grid->ColCount=s.size(); // Le colonne sono tante quanti i valori del
vettore
 dm->sql->Open();
 /*CREO INTESTAZIONE TABELLA*/
 for(unsigned int x=0;x<s.size();x++)
 {
  Grid->Cells[x][0]=s[x];
 }
 dim è un vettore che contiene le dimensioni delle colonne xchè
naturalmente variano
 /*DIMENSIONE DELLE COLONNE*/
 for(unsigned int x=0;x<dim.size();x++)
 {
   Grid->ColWidths[x]=dim[x];
 }
 /*LEGGO TUTTA LA QUERY PER METTERE I VALORI NELLE RIGHE DELLA GRIGLIA*/
 
 int x=1;// mi serve per prendere i valori dalla query
 int riga_=1;// dove inizia la riga della griglia
 while(!dm->sql->Eof)
 {
  riga_++;
  for(int col=1;col<Grid->ColCount;col++)
  {
     Grid->Cells[col][riga_]=dm->sql->Fields->FieldByNumber(x)-AsString;
     x++;
  }
  x=1;
  Grid->RowCount++;// Funzione che aggiunge fiscamente la riga alla
griglia
  dm->sql->Next();// scorre la query fino all fine
 }
 dm->sql->Close();//chiudo la query
}
Sicuramente non mi sono spiegato bene, ma quello che voglio chiedervi è
attenzione sui cicli secondo Voi per ottimizzare questa procedura cosa
devo fare, uso male i cicli?, i vettori non vanno bene? o cos'altro.
Questa procedura con 200/500 righe è veloce ma già con mille comincia e
decadere.
Vi prego di aiutarmi se sono riuscito a spiegarmi bene non sono OT in
questa ng.
Quello che chiedo come è velocizzare questa procedura.
Ciao Devis
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Devis credo di capire molto bene cio che vuoi dire...
poco tempo fa dovevo verificare una matrice di 65000x130000 e posso
dirti che per aspettare il risultato di tutta questa elaborazione
servivano 9 minuti buoni con quella cassa da morto che mi
ritrovo...questo si ripeteva per diversi cicli...insopportabile...
allora dopo una nottata ho risolto in maniera buona...e adesso non
supero i 4 secondi a ciclo, ma per questo ho impostato un metodo un
pochino personalizato,
se ti va il suggerimento scrivimi che possiamo discuterne, questo perchč
ogni implementazione ha il suo compromesso ottimizzato...;)
bye duido


Certo che mi va! Se hai già un idea te ne sarei grato .
Grazie duido 


poco tempo fa dovevo verificare una matrice di 65000x130000 e posso
[cut]
Scusa ma sei sicuro delle dimensioni della matrice??
Allora, supponiamo fosse di float (4 byte),
65'000*130'000=8'450'000'000 di float *4 = 33'800'000'000 di byte /
1024 = 33'007'812 di Kb (33 milioni di kappabyte!!!!!) / 1024=32'234
di Mb (32 mila megabyte leggasi 32 giga circa).
Ora, a meno che il nome del tuo CRAY non sia cassa da morto, penso che
ci sia una qualche correzione da apportare alle cifre.
Non è una polemica è solo un precisazione.
Ciao Stefano.

 Ciao Stefano.
la tua precisazione è perfettamente comprensibile e ti ringrazio per
l'osservazione ciò significa che qualcuno legge oltre che scrivere,
infatti non ho specificato che questa matrice viene percorsa da + cicli
e in conclusione è come se avessi una matrice di quelle dimensioni...
grazie duido
