Charli, recordà que el S.O. tambien aplica optimizaciones en las lecturas y accesos a disco haciendo uso de cache... El S.O. optimiza el acceso a disco leyendo de a bloques grandes de bytes y los mantiene chacheados, asi que quien sabe si realizas varias lecturas consecutivas de datos desde disco el S.O. termine haciendo un solo seek porque leyo en una sola lectura un bloque grande y lo cacheo en un buffer interno para optimizarlo...
Saludos Pablo 2009/4/8 Carlos Charlie <[email protected]> > o sea que: > > FILE* stream = fopen("file.dat", "r"); > char buffer[20]; > fread(buffer, sizeof(char), 20, stream) > > > Es lo mismo en terminos de accesos a disco que: > > FILE* stream = fopen("file.dat", "r"); > char buffer[20]; > for (int i=0; i<20; i++) fread(buffer++, sizeof(char), 1, stream); > > ????????????????????? > > O sea, suponiendo que 20 es menor al tamaño del buffer interno, estos dos > algoritmos tienen un unico acceso a disco? No vale la pena que implemente mi > propio buffer? > > > > Date: Wed, 8 Apr 2009 01:15:44 -0300 > > Subject: Re: [Prog] stdio vs fstream > > From: [email protected] > > To: [email protected] > > > > 2009/4/8 Carlos Charlie <[email protected]> > > > > > > Las funciones de stdio utilizan algun buffer interno? se puede > parametrizar su tamaño? > > > > > > > Pegate un vuelta por la documentación de POSIX[1] en relación con la > > biblioteca estándar de C. > > > > En resumen, lo que dice: > > > > > > > > stdio.h - standard buffered input/output > > > > > Así que, sí utiliza "buffers". > > > > > > > > The <stdio.h> header shall define the following macros as positive > integer constant > > > expressions: > > > > > > BUFSIZ > > > Size of <stdio.h> buffers. > > > _IOFBF > > > Input/output fully buffered. > > > _IOLBF > > > Input/output line buffered. > > > _IONBF > > > Input/output unbuffered. > > > > Sí, está parametrizado. El tamaño por defecto es la primer constante. > > Las otras son el modo en que opera el "buffer" y se utilizan junto a > > la función > > > > > > > > setvbuf - assign buffering to a stream > > > > > > int setvbuf(FILE *restrict stream, char *restrict buf, int type, > > > size_t size); > > > > > > > que permite establecer el bloque de memoria utilizado para realizar el > > "buffering" y su tamaño y modo de operación. > > > > Saludos > > > > [1] http://www.opengroup.org/onlinepubs/009695399/basedefs/stdio.h.html > > > > _______________________________________________ > > Lista de correo Programacion. > > [email protected] > > http://listas.fi.uba.ar/mailman/listinfo/programacion > > ------------------------------ > El nuevo Messenger es más personalizable que nunca ¡Conocelo y conseguí el > tuyo! <http://www.nuevomessenger2009.com/> > > _______________________________________________ > Lista de correo Programacion. > [email protected] > http://listas.fi.uba.ar/mailman/listinfo/programacion > > -- Si yo tengo una manzana y tú tienes una manzana, luego de intercambiarlas ambos tenemos una manzana. Si yo tengo una idea y tú tienes una idea, luego de intercambiarlas ambos tenemos dos ideas. Apoyando a la comunidad Open Source. Facebook prifile: http://www.facebook.com/profile.php?id=1244601012 Orkut prifile: http://www.orkut.com/Profile.aspx?uid=12594853021246287134
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
