2012-03-26 5 views
8

Je suis informaticien qui travaille avec une grande quantité de données de simulation et souvent je trouve moi-même sauvegarder/charger des données dans/du disque. Pour les tâches simples, comme un vecteur, c'est aussi simple que de jeter des tas de nombres dans un fichier et c'est tout.C + + Boost.serialization vs simple load/save

Pour les choses plus complexes, les objets de vie et autres, j'ai des fonctions de sauvegarde/chargement. Maintenant, je ne suis pas un informaticien, et donc souvent je vois des terminologies ici sur SO que je ne comprends pas (mais j'aime). L'un d'entre eux que j'ai rencontré récemment fait l'objet de sérialisation et Boost.Serialization bibliothèque. D'après ce que je comprends la sérialisation est simplement le processus de conversion de vos objets en quelque chose qui peut être sauvegardé/chargé de dist ou être transmis sur un réseau et autres. Considérant que tout au plus j'ai besoin de sauvegarder/charger mes objets dans/depuis le disque, y a-t-il une raison pour laquelle je devrais passer des fonctions de chargement/sauvegarde simples à Boost.Serialization? Qu'est-ce qui me donnerait autre chose que ce que je suis déjà en train de faire?

Répondre

10

Cette bibliothèque prend en compte de nombreux détails qui pourraient ne pas être très apparents d'un point de vue purement «applicatif». Par exemple, portabilité des données WRT big/little endianess numérique, durée de vie des données pointues, conteneurs structurés, versionnage, extensions non intrusives, et more. De plus, il gère correctement l'interaction avec les autres infrastructures std ou boost, et dicte un mode de structuration du code qui vous facilitera la maintenance du code. Vous trouverez des sérialiseurs prêts à l'emploi pour de nombreux conteneurs (tous std & boost?).

Et si vous avez besoin de partager vos données avec quelqu'un d'autre, il y a de fortes chances pour que la référence à un schéma publié, maintenu et débogué facilite les choses.

+0

Aussi: pointeurs partagés et aliasés, le fléau de toute la complexité de la sérialisation – sehe

+0

@sehe: oui, vous exprimez plus clairement ce que je voulais avec * données pointées durée de vie * – CapelliC

+1

Je dirais que les deux "conteneurs structurés" et "partagé Les pointeurs "ne sont finalement que des graphiques, mais certainement dans la science computationnelle, vous aurez également d'autres graphiques. Et en particulier dans la sérialisation graphique, il est utile d'avoir une bibliothèque bien conçue. – MSalters