Ciao a tutti!
Qual è il modo più veloce di leggere un file di testo in c e scriverlo in termini di tempo di esecuzione?
Ciao a tutti!
Qual è il modo più veloce di leggere un file di testo in c e scriverlo in termini di tempo di esecuzione?
cosa? il tempo che ci impiaga? saranno millisecondi se nn menoOriginariamente inviato da minoz
Ciao a tutti!
Qual è il modo più veloce di leggere un file di testo in c e scriverlo in termini di tempo di esecuzione?
Sono millisecondi se il file è piccolo, ma devo leggere file molto grandi e quindi mi serve qualcosa che sia molto veloce!Originariamente inviato da bako
cosa? il tempo che ci impiaga? saranno millisecondi se nn meno
Visto che nella lettura di un file l'accesso al disco è l'elemento che consiziona le prestazioni, basta minimizzare il numero di accessi. Se il file non è troppo grande puoi caricarlo completamente in memoria in una volta sola, in caso contrario devi utilizzare un buffer, ad esempio di 1 MB, in cui carichi il file un po per volta.
Sun Certified Java Programmer
EUCIP Core Level Certified
European Certification of Informatics Professionals
Avresti per caso qualche esempio da postare?Originariamente inviato da anx721
Visto che nella lettura di un file l'accesso al disco è l'elemento che consiziona le prestazioni, basta minimizzare il numero di accessi. Se il file non è troppo grande puoi caricarlo completamente in memoria in una volta sola, in caso contrario devi utilizzare un buffer, ad esempio di 1 MB, in cui carichi il file un po per volta.
Questo codice legge un intero file in un buffer che ha la dimensione del file. Se non vuoi leggere l'intero file ti allochi un buffer di dimensione fissa, ad esempio 1024 * 500 bytes (500KB), quindi esegui la fread in un ciclo while che continua finchè feof(pFile) non restituisce 1 indicando che la fine del file è stata raggiunta.
Codice PHP:
/* fread example: read a complete file */
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * pFile;
long lSize;
char * buffer;
pFile = fopen ( "myfile.txt" , "rb" );
if (pFile==NULL) exit (1);
// obtain file size.
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
// allocate memory to contain the whole file.
buffer = (char*) malloc (lSize);
if (buffer == NULL) exit (2);
// copy the file into the buffer.
fread (buffer,1,lSize,pFile);
/*** the whole file is loaded in the buffer. ***/
// terminate
fclose (pFile);
free (buffer);
return 0;
}
Sun Certified Java Programmer
EUCIP Core Level Certified
European Certification of Informatics Professionals