+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Spazio occupato da un Dictionary

  1. #1
    SebastianoFloridia non è in linea Scolaretto
    Post
    70

    Spazio occupato da un Dictionary

    Ciao Ragazzi c'è un limite alle dimensioni di una Collection Dictionary?

    public static Dictionary Linee = new Dictionary();

    non ho trovato riferimento in giro.
    Grazie

    Sebastiano Floridia
    Ultima modifica di AntonioG; 31-03-2018 06:12 

  2. #2
    L'avatar di sspintux
    sspintux non è in linea Very Important Person Ultimo blog: Mappa Italia senza le Google API
    Luogo
    Lazio
    Post
    1,575
    Blogs
    20
    Ciao,

    mi viene da pensare che molto probabilmente il limite sarà la RAM disponibile
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  3. #3
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Si infatti è qualcosa del genere, ma non so come gestirla ed ampliarla.
    Il mio quesito nasce da una sottostruttura molto complessa.

    Con elementi singoli con 20 proprietà arrivo a 10000.
    Appena amplio la sottostruttura tipo;


    public double[,,] ResAste= new double[200,11,8];
    public double[,] ResAsteSLDx = new double[11, 8];
    public double[,] ResAsteSLDy = new double[11, 8];
    public double[,] ResAsteSLDz = new double[11, 8];
    public double[,] ResAsteSLUx = new double[11, 8];
    public double[,] ResAsteSLUy = new double[11, 8];
    public double[,] ResAsteSLUz = new double[11, 8];
    public double[,,] ResAsteCmb = new double[200,11, 8];
    public double[,,] DefAste = new double[200, 11, 6];

    per ogni oggetto ha i sottodati ed arrivo a 1500.
    se amplio i dati di sottostruttura ancora di più ovvero inserisco altre matrici dati
    a 1000 ottengo un bel over flow.
    Spazio occupato dalla dictionary in over flow.

    C'è modo di avere una sottostruttura dati molto corposa e contemporaneamente 10000 oggetti .

    Spero di essere stato chiaro.
    Saluti
    Sebastiano Floridia

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,903
    Blogs
    5
    Ne hai parlato già in un altro forum...

    Conta il numero di elementi della tua Collection e l'occupazione di memoria complessiva e poi cerchiamo di capire.
    Il sistema e il programma sono a 32 bit? In questo caso è terminato lo spazio di indirizzamento usermode.

    Dovresti ricompilate a 64 bit su sistemi a 64 bit
    Ultima modifica di AntonioG; 30-03-2018 22:53 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Confermo ne ho parlato tempo fa, senza aiuti e soluzioni. ci ho lavorato da solo.
    per la sotto struttura che mi serve arriva al max 1050 elementi . oltre esplode tutto.

    Come faccio a vedere l'occupazione di memoria della collection runtime?
    grazie
    Sebastiano Floridia

  6. #6
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Dimenticavo. è compilato per 32 bit.
    Grazie
    Sebastiano Floridia

  7. #7
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,903
    Blogs
    5
    Conta tutti i double che ci sono
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  8. #8
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Ciao
    Guardando la struttura dati tipo che mi soddisfa:

    public double[,,] ResAste= new double[100,11,8]; //risultati aste singola condizione
    public double[,] ResAsteSLDx = new double[11, 8]; //risultati aste singola caso sismico SLD X
    public double[,] ResAsteSLDy = new double[11, 8]; //risultati aste singola caso sismico SLD Y
    public double[,] ResAsteSLDz = new double[11, 8]; //risultati aste singola caso sismico SLD Z
    public double[,] ResAsteSLUx = new double[11, 8]; //risultati aste singola caso sismico SLD X
    public double[,] ResAsteSLUy = new double[11, 8]; //risultati aste singola caso sismico SLD Y
    public double[,] ResAsteSLUz = new double[11, 8]; //risultati aste singola caso sismico SLD Z
    public double[,,] ResAsteCmb = new double[100,11, 8]; // risultati aste combinati

    public double[,,] DefAste = new double[100, 11, 6]; //risultati deformazioni aste singola condizione
    public double[,] DefAsteSLDx = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD X
    public double[,] DefAsteSLDy = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD Y
    public double[,] DefAsteSLDz = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD Z
    public double[,] DefAsteSLUx = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD X
    public double[,] DefAsteSLUy = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD Y
    public double[,] DefAsteSLUz = new double[11, 8]; //risultati deformazioni aste singola caso sismico SLD Z
    public double[,,] DefAsteCmb = new double[100, 11, 8]; // risultati deformazioni aste combinati

    Sono circa 54000 elementi double.

    ipotizziamo 2000 elementi della collections.

    abbiamo:
    108.000.000 caselle per double.


    Sono molti?
    Grazie
    Sebastiano Floridia

  9. #9
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,903
    Blogs
    5
    Moltiplica per 8 byte per ogni double e sono circa 860 MB. Più tutto quello che serve per puntare correttamente ai dati delle strutture.

    Se tenta di allocare questa quantità di indirizzi (probabilmente contigui) in un processo a 32 bit, il sistema può facilmente fallire (praticamente un terzo del massimo disponibile tenendo presente che i 3G sono già occupati dall'applicazione e dal resto che viene allocato)

    Devi scrivere l'applicazione a 64 bit per non avere problemi (o meglio, per sfruttare meglio la memoria installata)
    Ultima modifica di AntonioG; 31-03-2018 06:40 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  10. #10
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Grazie Antonio, ho fatto un test a 64 bit e non riscontro problemi.
    Abbastanza per calcolare un grattacielo di Dubai!!!
    Purtroppo un componente esterno mi costringe a lavorare a 32.
    Provo a costringere l'autore del componente a lavorare a 64.
    Intanto Grazie!!!
    Sebastiano Floridia

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi