>Ciao a tutti,
Ciao
>Sto facendo un programma in vb2008 e ho bisogno di creare una
>variabile molto molto grossa, tipo 30000x20000 e in ogni cella
>devo scriverci un valore di 4 cifre senza virgola, mi sapete
>consigliare come dichiararla per fare in modo che sia il più
>leggera possibile???
L'idea che seguirei è la questa:
Informazioni ---] Caricamento in memoria ---] Operazioni in memoria
Per fare una cosa del genere la struttura che mi verrebbe da consigliarti è la Dictionary(Of string,integer) oppure una Hashtable (che dovrebbe essere la piu' performante).
Non so quanta memoria hai a disposizione ma una tabella del genere dovrebbe comunque occupare un pò di spazio (però win swappa in automatico e a te non ti tange)
Inoltre sia la dictionary che la hashtable ti permettono di consumare memoria solo per le celle che usi... se su 20000x20000 in realtà ne imposti solo 1500 x 1500 e le altre stanno a zero consumi solo per quelle 1500x1500
Un esempio banale da cui magari puoi scriverti una classe x implementarti la matrice tramite gli hashtable: ( invece di integer puoi usare un tipo di dato piu' piccolo visto che devi mantenere solo 4 cifre in modo da risparmiare memoria)
' La nostra matrice fittizia
dim myMem as new Dictionary(of string,integer) // oppure dim myMem as new hashtable
Dim x as integer // indice X
dim y as integer // indice Y
dim valoreCella as integer //valore da inserire in myMem(x,y)
// Aggiungi il valore alla cella identificata dai due indici
myMem.add(x & "*" & y, ValoreCella)
// Accesso al valore
dim myVal as integer
if myMem.containsKey(x & "*" & y) then
myVal = myMem(x & "*" & y)
else
myVal = -1 ' Oppure un flag che indica che la cella è vuota
end if
>Grazie
Spero ti sia stato utile anche se non sò fino a quanta memoria riesci a gestire . Se provi a fare così fammi sapere come và.
Se funziona poi scriviamo pure la classe HashMatrix !
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/