Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Lettura file con Java molto lenta.. come risolvere?

    Salve a tutti,
    devo leggere dei dati da file. E' una semplice tabella contenente 0 e 1 ma con migliaia di colonne e centinaia di righe.
    Attualmente utilizzo il seguente metodo:

    // Uso un reader per memorizzare il file e poi degli array per leggere
    TextFileReader reader=new TextFileReader(files.get(index).getAbsolutePath()) ;
    reader.read();
    fullText[index]=reader.getText();

    // faccio poi lo split per avere ogni cella della tabella e poterla leggere
    String[] lines = fullText[indFile].split("\n"); // split whole file into lines
    String[] tokens = lines[2].split("\t"); // split line into tokens

    Su questa grossa mole di dati questo sistema è un pò lento visto che bisogna fare anche dei confronti. Se c'è un 1 in una certa posizione devo controllare se in quella stessa colonna ci sono altri 1 e questo va fatto per ogni riga del file portando ad una grossa complessità.
    In particolare per esaminare 2 o 3 di questi file ci vogliono circa 3-4 ore mentre invece vorrei che il lavoro venga fatto quasi istantaneamente. E' possibile con Java o devo perderci speranza?
    Grazie a chiunque sia arrivato a questo punto della lettura!
    :-D

  2. #2
    Sui controlli non saprei aiutarti.
    Per quanto riguarda lo split, forse (ma lo dico col beneficio dell'ignoranza), uno string tokenizer sarebbe più veloce per il solo motivo che lo split agisce su espressioni regolari.
    "Na' sedia te vojo tirà!"

  3. #3
    Originariamente inviato da Brazonet
    Sui controlli non saprei aiutarti.
    Per quanto riguarda lo split, forse (ma lo dico col beneficio dell'ignoranza), uno string tokenizer sarebbe più veloce per il solo motivo che lo split agisce su espressioni regolari.
    Uhmm.. ok provo con il tokenizer.
    Altro problema che dimenticavo è ke sono più file. Le colonne non sono ordinate nei file e a volte ci sono anke colonne diverse.
    E se trovo un 1 da una parte devo prima fare la ricerca della colonna corrispondente nell'altro file e poi controllare se trovo altri 1 sulla stessa colonna. Non so se un ordinamento preliminare può rallentare ulteriormente il tutto perché significherebbe spostare tutte le colonne (sempre migliaia di colonne).

  4. #4
    Visto che devi leggere dati da più file, forse una gestione a thread può aiutarti a ottimizzare i tempi, ma rimango sempre nel beneficio della mia ignoranza.
    "Na' sedia te vojo tirà!"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.