View Full Version : [Java] accesso casuale su file
Cait Sith
07-03-2008, 21:11
Qual'è il modo più efficiente per accedere un dato da un milione di elementi di tipo float. In genere li devo caricare in memoria tutti, a volte devo accedere solo a singoli elementi.
Dato per scontato l'accesso bufferizzato, credo che leggere un elemento per volta non sia il massimo. Forse sarebbe meglio leggere i dati in un buffer di byte, solo che poi non so come convertirli in un array di float.
Qual'è il modo più efficiente per accedere un dato da un milione di elementi di tipo float. In genere li devo caricare in memoria tutti, a volte devo accedere solo a singoli elementi.Allora potresti usare RandomAccessFile, che ha readFloat() e seek(). E nota che per questioni di indipendenza dalla piattaforma, la lettura/scrittura di tipi composti di più byte è fatta solo in formato big-endian.
Cait Sith
07-03-2008, 22:43
mhm, in realtà mi è sorto un dubbio, a me servirebbe utilizzare il sistema degli stream perchè vorrei comprimere i dati con gli zipStream, però ho bisogno anche dell'accesso casuale (utilizzando gli indici sul dato già decompresso) e non so se le due cose sono compatibili :confused:
il fatto è che dovrei utilizzare queste classi da matlab per poter avere un accesso casuale su dati compressi, il matlab infatti salva i dati nel suo formato e li comprime, ma poi li devi caricare tutti in una volta (cosa proibitiva), se invece uso fwrite e fread non posso comprimere i dati e mi vengono fuori dei file da 3 GB l'uno :eek:
se non dovesse esserci la soluzione dovrò per forza creare un file da 3 GB, zipparlo in un secondo file (che dovrebbe venire da 200 MB) e poi cancellare il primo.
nell'accesso dovrei invece fare il contrario,
però così credo che rallenti molto il programma principale :(
Non credo che ci sia modo di lavorare direttamente sui dati compressi, non è detto che l'informazione di un dato compresso stia in una sola locazione, può darsi che l'informazione sia "spalmata" su molti dati precedenti.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.