In pratica sto provando a leggere un file di grandi dimensioni (circa 10G) in un elenco di righe. Il file contiene una sequenza di numeri interi, qualcosa di simile:Leggere un file di grandi dimensioni in righe di stringa OCaml
0x123456
0x123123
0x123123
.....
ho usato il seguente metodo per leggere i file di default per la mia base di codice, ma si scopre di essere smettere di lenti (~ 12 minuti) in questo scenario
let lines_from_file (filename : string) : string list =
let lines = ref [] in
let chan = open_in filename in
try
while true; do
lines := input_line chan :: !lines
done; []
with End_of_file ->
close_in chan;
List.rev !lines;;
Credo di aver bisogno di leggere il file in memoria e quindi dividerlo in righe (sto usando un server 128G, quindi dovrebbe andare bene per lo spazio di memoria). Ma non ho ancora capito se OCaml
fornisce tale funzione dopo aver cercato i documenti here.
Quindi ecco la mia domanda:
Data la mia situazione, come leggere i file in elenco di stringhe in modo veloce?
Che ne dici di utilizzare
stream
? Ma ho bisogno di aggiustare il relativo codice dell'applicazione, quindi ciò potrebbe causare un po 'di tempo.
Perché non stampare le linee in un nuovo file? In ordine inverso, una riga alla volta. –