Suponiendo lo siguiente para ...
Salida:
Se abre el archivo ...
datos es 'largada' en el disco. Los datos en la memoria se encuentran en un gran buffer contiguo. Se escribe en el disco en su forma original directamente desde ese búfer. El tamaño del búfer es configurable, pero se fija durante la duración del flujo. Los búferes se escriben en el archivo, uno tras otro. No se realizan operaciones de búsqueda.
... el archivo está cerrado.¿Cuál es el método más rápido para la E/S de archivos secuenciales de alto rendimiento en C++?
de entrada:
un archivo grande (escrito secuencialmente como arriba) se lee desde el disco de principio a fin.
¿Hay pautas generalmente aceptadas para lograr el archivo más rápida posible secuencial de E/S en C++?
Algunas posibles consideraciones:
- pautas para elegir el tamaño del búfer óptimo
- Será una biblioteca portátil como impulso :: asio ser demasiado abstraído para exponer las complejidades de una plataforma específica, o pueden asumirse para ser óptimo?
- ¿La E/S asíncrona siempre es preferible a la sincronización? ¿Qué ocurre si la aplicación no está unida a CPU?
Me doy cuenta de que esto tendrá consideraciones específicas de la plataforma. Agradezco las pautas generales, así como las de plataformas específicas.
(mi interés más inmediato en Win x64, pero estoy interesado en los comentarios sobre Solaris y Linux también)
¿Desea volver a implementar 'cp'? Creo que me falta algo ... –