2015-09-28 1 views
1

J'ai un processus qui recueille des informations toute la journée et stocke les données dans une base de données de fichiers à plat via la sérialisation binaire. J'ai entendu parler de fichiers mappés en mémoire, et je me demande si je peux m'en servir. Mais je ne comprends pas vraiment la différence fondamentale entre les deux. Sont-ils essentiellement la même chose?Quelle est la différence entre les fichiers persistants mappés en mémoire et les fichiers sérialisés binaires?

+0

Oui, vous pouvez utiliser des fichiers mappés en mémoire. Quel avantage essayez-vous d'en tirer, ou quel problème essayez-vous de résoudre? – CodeCaster

+0

https://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx –

+0

Je rassemble des données et les stocke dans une structure binaire-sérialisée. Mais je veux maintenant le stocker de manière interopérable (un peu de format de chaîne) et aussi le rendre plus flexible si je change la structure de données plus tard. Cela réduira sans aucun doute les performances et augmentera l'espace de stockage. Donc je me demandais si je pouvais compenser un peu en utilisant des fichiers mappés en mémoire. – user3685285

Répondre

3

Les deux choses ne sont pas liées. Il n'y a pas de différence à expliquer. Les fichiers mappés en mémoire concernent les E/S. La sérialisation concerne le format de données.

Vous pouvez effectuer des E/S via des mappages de mémoire ou via des fonctions E/S.

Vous pouvez utiliser toutes sortes de formats de données.

Ces éléments sont indépendants.

+0

Ok, je suis plus confus maintenant. Si cela est vrai, et que les fonctions mappées en mémoire sont plus rapides, pourquoi utiliser des fonctions IO? En outre, je pensais que les fonctions mappées en mémoire écrivaient des données exactement comme elles apparaîtraient dans la mémoire d'un processus. Cela n'implique-t-il pas une mise en page de sérialisation spécifique? – user3685285