[eside-ghost] Lectura/escritura eficiente de ficheros en C
Borja Sotomayor
borja en borjanet.com
Jue Ene 26 22:03:14 CET 2006
Hola a todos,
Bueno, esta es una pregunta de C, pero a demasiado bajo nivel para
enviarla a las listas de C de ESIDE (aparte de que me interesa saber la
opinión de los low-level jeinkers ;-)
En la asignatura de programación que imparto aquí en Chicago vamos a
pedirles a los alumnos que reimplementen algún comando estandar de UNIX
que manipule ficheros (cat o cp, por ejemplo). Como "solución base",
vamos a aceptar que hagan la lectura/escritura de ficheros con funciones
como fprintf/fscanf, pero daremos puntos extra a quien encuentre una
solución más eficiente.
Lo que pasa es que tampoco tenemos muy claro cómo sería esa solución
"más eficiente" ;-) Por lo que tengo entendido (y corregidme si me
equivoco), utilizar fprintf/fscanf para manipular ficheros muy grandes
puede ser poco eficiente, y hay llamadas a más bajo nivel para mapear
los ficheros directamente a memoria y luego transferir datos entre
ficheros utilizando memcpy, no? A bote pronto, diria que hay que hacerlo
con mmap y munmap, pero igual esa no es la mejor manera de hacerlo. Me
imagino que otra alternativa sería utilizando read()/write() a pelo con
un tamaño de buffer óptimo.
En fin, si alguien puede proporcionarme alguna pista (o enlaces a
documentos que traten sobre este tema), pues lo agradecería :-)
Un saludo,
--
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Borja Sotomayor, University of Chicago
Ph.D. Student, Department of Computer Science
Hinds 016, 5734 South Ellis Avenue, 60637 Chicago, IL
GT4 Tutorial: http://gdp.globus.org/gt4-tutorial/
BorjaNet: http://www.borjanet.com/ borja en borjanet.com
·····························································
"Dis maschine vill run und run!"
-- Kurt Gödel (on the Turing Machine)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Más información sobre la lista de distribución eside-ghost