Newsgroup: it.comp.lang.delphi
Titolo: TIBSQL vs array

In Firebird carico con TIBSQL una corposa selezione di record  
(orientativamente da 5000 a 300000) da spazzolare ripetutamente avanti e  
indietro, anche decine di volte. Mi domandavo - prima di provare - se sia  
più rapido copiare prima la selezione in un array e poi spazzolare quello  
o se, in fin dei conti, il guadagno è minimo o inesistente, e i metodi  
	First, Next, Last, ecc. sono abbastanza efficienti.
 
Grazie per l'attenzione.
 
-- 
Michele

 
Questa fissazione per gli array continuo a non capirla.
Tutti sanno (o dovrebbero sapere...) che gli array finiscono nello
STACK mentre le liste finiscono nella HEAP.
Magari la differenza tra queste 2 cose strane e' sconosciuta a tanti,
ma sarebbe il caso di capirla...
 
A parte cio, personalmente, dovrei avere dei motivi molto seri per
caricare in memoria un numero di record cosi' elevato.
 
A.

 ma sarebbe il caso di capirla...
 
Quale differenza vuoi che si capisca, sii tempo o di spazio?
Se parliamo di tempo ha senso distinguerli: stack e heap hanno velocità 
d'accesso ben diverse.
 
Se allochi sullo stack il SO usa la memoria contigua, quindi un array 
avrà tempi di attraversamento minimi.
 
Se allochi sullo heap, il SO alloca memoria dove meglio crede lui, e 
non hai la certezza assoluta che userà memoria contigua,anzi sarebbe un 
errore concettuale allocare un array nello heap.
 
 
 
-- 
morde
Android
QT 4.7
Delphi (5,6,7.. expired)
Firebird Database
 


Dovresti effettivamente provare.
Le primitive del dataset, first, next, ecc, scatenano anche gli eventi 
di refresh delle GUI attachate per via dell'MVC.
Poichè la GUI gira in solo thread, prima di attraversare il dataset devi 
assolutamente fare un disablecontrols altrimenti rallenti tutto.
 
Se invece fai una copia in un array sullo stack e fai degli 
attraversamenti, imho guadagni qualcosa, dipende sempre dalla quantità 
di dati.
 
Secondo me la differenza è minima se parliamo di poche migliaia di 
record, e incomincia a notarsi quando arrivi a qualche centinaia di 
migliaia.
 
Ma mi piacerebbe avere qualche tuo riscontro se farai queste prove.


Detesto le cose dette/scritte in modo non completo.. :-D
 
1) lo stack viene usato anche per altre cose, cose critiche...
 
2) lo stack e' molto piu' piccolo rispetto allo heap
 
Non mi sognerei mai di pensare che i record devono finire nello
heap....Le domande che pongo sono sempre le stesse:
 
a) xche record e non classi?
 
b) xche array e non liste?
 
 
A.
 

 b) xche array e non liste?
 
Eh già...perchè programmazione procedurale e non a oggetti? :)
Penso al medesimo paragone sul C++ vs C: il C++, rispetto al C, 
introduce le classi e le liste.
Bene, ecco adesso cosa ne pensa Linus Torvalds:
http://harmful.cat-v.org/software/c++/linus
 
 
A volte i guru mi sembrano così anacronistici... :)


 Bene, ecco adesso cosa ne pensa Linus Torvalds:
http://harmful.cat-v.org/software/c++/linus
 
 
Si, ma Linus non e' QUA, ORA, ACCANTO A ME, a fare quello che IO sto
facendo.
E fare quello che sto facendo io, con un paradigma strutturato,
sarebbe una follia.
 
A.
 
 

 Ma mi piacerebbe avere qualche tuo riscontro se farai queste prove.
 
Speravo che qualcuno avesse GIA' fatto queste prove....
:-)
 
 
-- 
Michele