Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto 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...
-
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
-
Hai già controllato lo switch di ottimizzazione?
-
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
-
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
-
Ciao.
A questo punto potresti provare a usare una TStringList.
Ha già la funzione per il caricamento da File e traduzione in testo.
Stilgar