Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: SB - Novembre 27, 2014, 08:04:30 pm

Titolo: I/O su file di testo
Inserito da: SB - Novembre 27, 2014, 08:04:30 pm
Ciao a tutti e ben ritrovati
Ho una domanda un po' strana da sottoporvi
Sto partecipando ad una specie di competizione sulla risoluzione di problemi.
L'obiettivo è quello di scrivere dei programmini che risolvono dei quesiti e io sto usando FreePascal
Mi ritrovo a dover leggere e scrivere una grande quantità di numeri interi da un file di testo. Fate conto 1000000...
Purtroppo per quanto io cerchi di ottimizzare le prestazioni ottengo tempi doppi rispetto a programmi realizzati in C/C++
Ho provato ad usare anche dei buffer, ma alla fine temo che il problema stia nelle istruzioni Read e Write
Qualche idea su come ottenere letture scritture veloci?

Grazie in anticipo

Ciao

P.S. Per il resto direi che FP regge bene la competizione col C...


Titolo: Re:I/O su file di testo
Inserito da: cliff - Novembre 27, 2014, 09:14:22 pm
Ai tempi per velocizzare le letture e le scritture sui file usavo le BlockRead e BlockWrite su file non tipizzati.
Questo in delphi. Spero che le istruzioni siano state riportate in Lazarus.
Bye
Titolo: Re:I/O su file di testo
Inserito da: nomorelogic - Novembre 28, 2014, 08:42:48 am
Hai già controllato lo switch di ottimizzazione?
Titolo: Re:I/O su file di testo
Inserito da: SB - Novembre 28, 2014, 04:53:07 pm
Purtroppo non sono io a compilare il programma e chi gestisce la competizione non mi sembra molto esperto nel configurare il compilatore... (lo fanno lavorare a 16bit...)
Speravo di evitare di scrivere a mano le funzioni di conversione testo/intero, ma mi sa che non ho alternative. Proverò ad usare BlockRead e BlockWrite come suggeritomi.
Intanto vi ringrazio. Se poi vi viene qualche altra idea...
Ciao
Titolo: Re:I/O su file di testo
Inserito da: SB - Novembre 28, 2014, 07:24:00 pm
Ho dovuto usare TFileStream e convertire il testo byte per byte.
Il tempo di esecuzione si è ridotto a 1/3 rispetto all'uso di Read e Write...

Ciao
Titolo: Re:I/O su file di testo
Inserito da: Stilgar - Dicembre 02, 2014, 08:49:36 pm
Ciao.
A questo punto potresti provare a usare una TStringList.
Ha già la funzione per il caricamento da File e traduzione in testo.
Stilgar