2009-03-13 5 views

Répondre

2

Vous aurez besoin de code plus complexe pour établir le mappage de fichiers que pour l'ouverture et la lecture. Le mappage de fichiers est destiné à l'accès aléatoire à une section de fichier. Si vous n'en avez pas besoin, ne vous souciez pas du mappage de fichiers.

Si vous avez déjà besoin de porter votre code sur une autre plateforme, vous le ferez beaucoup plus facilement et plus rapidement si vous n'utilisez pas le mappage de fichiers. Avec ReadFile/WriteFile, vous disposez d'une sémantique déterministe de gestion des erreurs.

13

Lorsque vous utilisez des fichiers mappés en mémoire, les erreurs sont renvoyées en lançant une exception.

En outre, si le fichier mappé en mémoire doit frapper le disque (ou pire, le réseau), la lecture de votre mémoire peut prendre plusieurs secondes (voire quelques minutes). En fonction de votre application, cela peut provoquer des décrochages inattendus. Si vous utilisez ReadFile/WriteFile, vous pouvez utiliser des variantes asynchrones de l'API pour vous permettre de contrôler ce comportement. Vous avez également des performances plus déterministes si vous utilisez ReadFile, en particulier si votre modèle d'E/S est prévisible: les E/S mappées en mémoire sont souvent aléatoires alors que ReadFile est presque toujours en série (puisque ReadFile lit à la position actuelle du fichier et avance la position actuelle du fichier).

2

Un gros avantage du mappage de fichiers est qu'il n'influence pas le cache système. Si votre application effectue des E/S excessives au moyen de ReadFile, votre cache système va augmenter, consommant de plus en plus de mémoire physique. Si votre système d'exploitation est à 32 bits et que vous avez beaucoup plus de 1 Go de mémoire, vous avez de la chance, puisque sur Windows 32 bits, la taille du cache système est limitée à 1 Go. Dans le cas contraire, le cache système consommera toute la mémoire physique disponible et le gestionnaire de mémoire commencera bientôt à purger les pages des autres processus sur le disque, intensifiant les opérations sur les disques au lieu de les réduire réellement. L'effet est particulièrement visible sur Windows 64 bits, où la taille du cache est limitée uniquement par la mémoire physique disponible. En revanche, le mappage de fichiers n'entraîne pas une surcharge du cache système et, en même temps, ne dégrade pas les performances.

Questions connexes