En supposant que les suivantes pour...
Sortie:
Le fichier est ouvert...
Les données sont 'streaming' sur le disque. Les données en mémoire dans une grande mémoire tampon contiguë. Il est écrit sur le disque dans sa forme brute, directement à partir de la mémoire tampon. La taille de la mémoire tampon est configurable, mais fixe pour la durée du cours d'eau. Les tampons sont écrites dans le fichier, l'un après l'autre. Pas d'opérations de recherche sont menées.
...le fichier est fermé.
Entrée:
Un gros fichier (par écrit comme ci-dessus) est lu à partir du disque du début à la fin.
Là généralement acceptée des lignes directrices pour la réalisation la plus rapide possible séquentielle e/S de fichier en C++?
Certaines considérations possibles:
- Lignes directrices pour le choix optimal taille de la mémoire tampon
- Une bibliothèque portable comme boost::asio être trop abstraite pour exposer les subtilités d'une plate-forme spécifique, ou peut-il être considéré optimal?
- Est asynchronous I/O toujours préférable d'synchrone? Que faire si la demande n'est pas contraire au CPU?
Je me rends compte que ce sera la plate-forme des considérations spécifiques. Je salue les orientations générales ainsi que celles particulières pour les plates-formes.
(mon plus intérêt immédiat dans Win x64, mais je suis intéressé par les commentaires sur Solaris et Linux)