Question

  1. CreateFileMapping et MapViewOfFile, puis nous faisons E / S avec une fonction comme memcpy.
  2. Il suffit d'utiliser Lecture / WriteFile.

est le premier plus rapide que le deuxième? Je ne comprends pas.

Pourquoi est-il plus rapide?
Si nous utilisons un objet section, nous pouvons obtenir plus d'avantages de cache de VMM ou Cache Manager?

Était-ce utile?

La solution

mappage de mémoire de fichiers est plus rapide quand sur la page se produit, que le fichier lui-même est utilisé comme stockage pagination.

Si la mémoire dans la mémoire fichier mis en correspondance ne change pas il n'y a pas besoin de rincer la page du fichier d'échange que les données sont dans le fichier déjà et les fenêtres peuvent relire la page à partir du disque. les fichiers .EXE et .DLL sont chargés à l'aide de ce mécanisme et sont donc leur propre stockage de page.

Si la mémoire dans la mémoire fichier mis en correspondance est écrit, puis sur la page est le même que si le fichier d'échange avait été utilisé. Plus rapide que peut-être au même endroit sur le disque est utilisé (sous réserve de NTFS Optimisations).

Les API simples consomment fichier de page mémoire sauvegardée pour maintenir le contenu du fichier tout en mémoire.

En perspective légèrement différente les deux API sont optimisées en tant que fichiers de mémoire mappées sont peut effectivement être utilisé les API de fichiers en lecture / écriture sous le capot de sorte que vous obtenez un micro-optimisation que vous utilisez une abstraction plus faible

Les deux mécanismes emploieront le gestionnaire VMM / Cache.

Autres conseils

L'utilisation de ReadFile / WriteFile implique plusieurs opérations de copie bloc de mémoire supplémentaire, il sera plus lent, que l'utilisation des OPC monétaires. Une autre question est de savoir combien il sera plus lent - c'est ce que vous devez vous mesurer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top