2009-03-13 4 views

Respuesta

2

Necesitará un código más complejo para establecer la asignación de archivos que solo para abrir y leer. La asignación de archivos está destinada para el acceso aleatorio a una sección del archivo. Si no necesita eso, simplemente no se moleste con el mapeo de archivos.

Además, si alguna vez necesitas transportar tu código a otra plataforma, lo harás mucho más fácil y rápido si no usas la asignación de archivos.

13

Con ReadFile/WriteFile tiene una semántica de manejo de errores determinista. Cuando utiliza archivos mapeados en memoria, los errores se devuelven arrojando una excepción.

Además, si el archivo mapeado en memoria tiene que golpear el disco (o peor, la red), su lectura de memoria puede tardar varios segundos (o incluso minutos) en completarse. Dependiendo de su aplicación, esto puede causar paradas inesperadas.

Si usa ReadFile/WriteFile puede utilizar variantes asincrónicas de la API para permitirle controlar este comportamiento.

También tiene un rendimiento más determinista si usa ReadFile, especialmente si su patrón de E/S es predecible: la E/S asignada a la memoria suele ser aleatoria, ya que ReadFile casi siempre es serial (ya que ReadFile lee en la posición actual del archivo y avanza la posición actual del archivo).

2

Una gran ventaja de la asignación de archivos es que no influye en la memoria caché del sistema. Si su aplicación hace una E/S excesiva por medio de ReadFile, la caché de su sistema crecerá y consumirá más y más memoria física. Si su sistema operativo es de 32 bits y tiene más de 1 GB de memoria, entonces tiene suerte, ya que en Windows de 32 bits, el tamaño de la memoria caché del sistema está limitado por 1 GB. De lo contrario, la memoria caché del sistema consumirá toda la memoria física disponible y el administrador de memoria pronto comenzará a purgar páginas de otros procesos en el disco, lo que intensificará las operaciones del disco en lugar de reducirlas. El efecto es especialmente notable en Windows de 64 bits, donde el tamaño de la caché está limitado solo por la memoria física disponible. La asignación de archivos, por otro lado, no lleva a un crecimiento excesivo de la memoria caché del sistema y, al mismo tiempo, no degrada el rendimiento.

Cuestiones relacionadas