Newsgroup: it.comp.lang.visual-basic
Titolo: Carica e scarica del listview

Utilizzando un listview con diciamo 5 colonne ho notato un fenomeno curioso
all'aumentare delle linee (listitems) inserite. Quando il numero č alto (per
motivi legati al tipo di programma ho superato le 30.000 linee) il tempo di
caricamento č accettabile e valutabile in pochi secondi, ma il tempo di
scarica (clear) supera i 5 minuti. Qualcuno ha cercato di affrontare questo
problema ed ha trovato una soluzione (diversa da quella di non definire un
tale numero di items)?

 ha scritto nel messaggio
news:WK2X7.375163$sq5.18...@news.infostrada.it...

Mi sembra che tempo fa se ne fosse parlato riguardo all'oggetto Collection.
La cosa credo sia influenzata anche da altri fattori, probabilmente legati
alle risorse della macchina ma non necessariamente, fatto sta che sul PC
piu' "scarso" dell'ufficio, il metodo Clear un ListView con 5 colonne e
50.000 elementi impiega circa 7 secondi.
Comunque ,se non ricordo male, si disse che quelle condizioni era piu'
performante un ciclo (a ritroso) su tutti gli elementi con chiamata al
metodo Remove... vedi un po' se e' il tuo caso.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:WK2X7.375163$sq5.18...@news.infostrada.it...

Ho avuto il tuo stesso problema su un PC non proprio scarso... con qualche
migliaia di items impiegava intorno ai 2 minuti a fare la Clear
(incredibile, impiega di piů a rilasciare le risorse che ad allocarla...).
Soluzione: ho rinunciato alla listview :)
Se la soluzione proposta da Luca non funziona tieni in considerazione di
usare il  classico "caricamento virtuale".
Cioč ti memorizzi tutto ad. es. in una collection e fai vedere solo le linee
che ci stanno a video.
In questo caso perň ti devi gestire a mano la scrollbar verticale.
In questo caso conviene anche portare il tutto su un usercontrol, in modo da
non spargere codice per l'applicazione.
Ciao
------------------------- SiDB Simple DataBase engine ----
------------------------- adParser Expression evaluator --
 
http://space.virgilio.it/zntf...@tin.it/
----------------------------------------------------------

 (incredibile, impiega di più a rilasciare le risorse che ad allocarla...).
Quando mi capitò un problema simile, su una M$FlexGrid, si risolse
tutto magicamente ricompilando in VB6. Mi pare di ricordare che
alla fin fine fosse un problema di garbage collection, che nel VB5 fa
abbastanza schifo, mentre sul VB6 era molte volte più veloce.
Aspè, che cerco il post, era un paio di anni fa...
Trovato:
http://groups.google.com/groups?selm=7hkmbo%241d82%241%40urano.inet.it&output=gp
lain
Chissà se si tratta della stessa cosa ?
Bye, G.

In effetti sto utilizzando VB5, proverò con VB6 per testare se il problema
permane, ma qualcuno conosce una soluzine valida senza il cambio del
compilatore?
"Paperino" <non...@lo.dico> ha scritto nel messaggio
news:a0shgu$70d6$1...@stargate1.inet.it...


 compilatore?
Io provai anche ad aggiornare il solo controllo con quello del VB6,
ma il problema era proprio nel VB.
Credo che il consiglio di Zanna sia la via migliore.
Bye, G.

1) No! Sto usando su VB5 i controlli di VB6 (ma lo faceva anche con i
vecchi)
2) E quando, per esempio, riordino su di una colonna cosa faccio, scrivo un
quicksort per minimizzare i tempi? Dai per favore.
Scusa se sono stato un poco drastico
"Paperino" <non...@lo.dico> ha scritto nel messaggio
news:a0slms$718u$1...@stargate1.inet.it...


 compilatore?
Ti dirň... io ho avuto il problema proprio con VB6, quindi, in matematica si
raggrupperebbero i membri piů o meno cosě:
->  VB6 or VB5 = Schifo
->  VB(6 or 5) = Schifo
->  VB = Schifo / (5 or 6)
Se consiceriamo Schifo in modo assoluto (quindi tendente ad infinito) si
ottiene
VB = Schifo
:(


 Scusa se sono stato un poco drastico
Mal di testa ? Hai fatto le ore piccole, eh ? :-)
Un Paperino che ha "orinato" anche lui ;-)

Scusa, ma il consiglio non è buono. Si tratterebbe, in pratica, di
riscrivere una variante del listview della Microsoft. Il risultato,
probabilmente, sarebbe quello di scontrarsi con qualche problema intrinseco
del SO che non è stato superato nemmeno dai programmatori della Microsoft
(che qualcosa sanno fare). L'esempio che ho fatto, sulla necessità di
riscrivere gli algoritmi di riordinamento, era per fare presente che bisogna
andare incontro a molti problemi di programmazione. Sono certo che tu abbia
listati per affrontarli tutti, in questo caso perchè non mi dai direttamente
una listview senza il problema del tempo di scarica?
"Paperino" <non...@lo.dico> ha scritto nel messaggio
news:a0sssa$6pje$1...@stargate1.inet.it...


 una listview senza il problema del tempo di scarica?
Se l'avessi, l'avrei già mandata al Sito Comune. A meno che, come
purtroppo mi è capitato spesso, alcune routine o componenti che
avrebbero potuto essere di interesse comune, non siano stati
sviluppati per la ditta per cui lavoro, non ho quindi i diritti legali di
disporne a mio piacere. In questo caso specifico, purtroppo, proprio
non ho quello che ti serve...
Hai provato a fare una ricerca con Google se qualcuno ha già
fatto una ListView personalizzata che faccia al caso tuo ? Non
dimenticare che VB è probabilmente il linguaggio più utilizzato
nel mondo, e di codice e componenti free ne trovi da perdertici...
Buon anno, G.

 nel mondo, e di codice e componenti free ne trovi da perdertici...
Proprio dopo aver mandato il post, sono capitato su questa pagina,
sembra proprio quello che ti serve. Dagli un'occhiata:
http://www.mvps.org/vbvision/grouped_demos.htm
Virtual ListView Demo.zip (19KB). This project shows how you can
create a fully virtual listview control using the listview in the common
controls library. In this context, "virtual" refers to a control that
only displays data but doesn't actually store the data that it displays.
[CUT]
A virtual list is also blindingly fast at displaying large quantities of items.
In fact, this demo displays over ONE MILLION items faster than the
blink of an eye!
Un Paperino e "The power of Google".

Grazie. Questa è una proposta sensata e ci lavorerò sopra. Comunicherò i
risultati sia in positivo che in negativo.
"Paperino" <non...@lo.dico> ha scritto nel messaggio
news:a0t5su$6gui$1...@stargate1.inet.it...
