arkkimede
2017-08-02 00:23:34 UTC
Ho da poco acquistato una memoria usb della Lexar in cui erano dichiarate velocità di scrittura elevatissime.
Non fidanomi ho anche usato un programma test sotto windows (ATTO) in grado di testare le velocità di scrittura.
Il risultato di questo test è stato che se riesco a definire un "Transfer Size" di almeno 64k potrei arrivare a velocità di 30MB/sec.
La domanda allora è la seguente: come posso definire in un programma c sotto linux il transfer size?
Premetto che cercando su internet sono giunto all'istruzione setvbuf ma devo averla usata male perché non sono riuscito a giungere alla velocità di scrittura sperata.
In particolare (mantenendo l'essenziale):
char *buff = (char *)malloc(sizeof(char)*65536);
FILE *fp = fopen("nomeFile.bin","wb");
setvbuf(fp, buff, _IOFBF, (size_t)65536);
fwrite( );
fwrite( );
fwrite( ); etc.
Grazie per qualsiasi suggerimento
Non fidanomi ho anche usato un programma test sotto windows (ATTO) in grado di testare le velocità di scrittura.
Il risultato di questo test è stato che se riesco a definire un "Transfer Size" di almeno 64k potrei arrivare a velocità di 30MB/sec.
La domanda allora è la seguente: come posso definire in un programma c sotto linux il transfer size?
Premetto che cercando su internet sono giunto all'istruzione setvbuf ma devo averla usata male perché non sono riuscito a giungere alla velocità di scrittura sperata.
In particolare (mantenendo l'essenziale):
char *buff = (char *)malloc(sizeof(char)*65536);
FILE *fp = fopen("nomeFile.bin","wb");
setvbuf(fp, buff, _IOFBF, (size_t)65536);
fwrite( );
fwrite( );
fwrite( ); etc.
Grazie per qualsiasi suggerimento