2010-07-29 5 views

Répondre

3

Etes-vous sûr que ce sont les fichiers mappés en mémoire qui sont lents? Le système d'exploitation mappe le même morceau de RAM dans les deux espaces de processus (lorsqu'il est paginé.) D'autres causes de problèmes de performances peuvent être des mutex et autres primitives de synchronisation/lectures volatiles et invalidation de cache pour propager des modifications simultanées de la mémoire entre processus.

Vous pouvez essayer de modifier localement une zone non partagée, puis la copier en bloc plutôt que d'écrire plusieurs fois dans la mémoire partagée.

D'autres alternatives sont le passage de message, RPC ou DCOM, mais je doute que ceux-ci seront plus performants, en particulier si la quantité de données en cours de transfert/référencé est grande.

1

J'aurais pensé qu'une fois que vous auriez établi le mappage de la mémoire (avec MapViewOfFile), ce serait plutôt rapide.

Votre problème de performances est-il lié à la configuration de la mémoire mappée au lieu de l'utiliser une fois configurée? Si vous avez vraiment un problème vérifié avec les fichiers mappés en mémoire, c'est une autre technique: http://msdn.microsoft.com/en-us/library/h90dkhs0%28VS.80%29.aspx (segments de mémoire partagée DLL), mais je doute que cela va vraiment vous aider.

+0

Je suis d'accord. Si c'est trop lent, je pense que c'est un problème de synchronisation, pas un problème de fichier mappé en mémoire. –

Questions connexes