Ho un file molto grande delimitato da una sequenza di caratteri '* L * I * N * E'. Il file sarà dell'ordine di 250G. E ogni riga arriva intorno a 600 byte a 1000 byte. Eseguirò le seguenti operazioni sul file,
Leggi il file riga per riga e per ogni riga, lo darò a un parser che eseguirà alcuni calcoli sulla linea e aggiornerà alcune statistiche. Il parser impiegherà circa 15 micros per riga.
A partire da ora sto usando BufferedReader
per leggere le righe e passarle al parser in un singolo thread. La mia domanda è se ho un thread di lettura separato che legge solo il file e scarica tutto in una coda (in memoria) e che il mio parser agisce sulla coda in memoria (in un thread separato), posso ottenere un throughput migliore?
Niente cambia tranne che il mio parser agisce sui dati di memoria e un altro thread richiede solo operazioni di IO (leggi il file e scarica in una coda).
È un software complesso in cui il precedente è una parte, quindi sto cercando di accelerare la parte sopra. Quindi non riesco a postare il codice effettivo.