stockage bit à bit ??? - C++ - Programmation
Marsh Posté le 22-10-2007 à 10:26:45
Tu peux tenter les champs de bits :
http://mapage.noos.fr/emdel/notes.htm#bitfield
Mais bon, d'autres approches peuvent être envisagées. Par exemple, est-ce que tu as besoin de stocker 1.000.000 de vecteurs, ou peux-tu te contenter de vecteurs "clés" à partir desquels tu peux recalculer les autres ?
Autre "solution" : l'écriture d'un fichier de 1.6Go est-elle réellement rédhibitoire ? Ce n'est peut-être pas choquant selon le contexte. Au pire, tu peux aussi envisager de compresser ton fichier.
Marsh Posté le 22-10-2007 à 10:52:23
Elmoricq a écrit : Tu peux tenter les champs de bits : |
merci pour ta réponse,
en fait oui j'ai besoin de stoker toutes les valeurs... et j'ai été gentils en disant 1 000 000 car c'est surement plusieurs dizaine/centaine fois 1 million que je vais devoir stoker !
j'ai effectivement pensé à la compression, tu me conseilles quoi ? celà prendrait du temps à compresser/décompresser ?
Marsh Posté le 22-10-2007 à 11:25:48
ReplyMarsh Posté le 22-10-2007 à 11:42:28
Je plussoie: je ne vois pas de problème avec la taille du fichier. Un fichier ça se compresse aussi: une compression à la volée avec gzip ça devrait bien le faire.
Sinon, change de stratégie: t'as des doublons dans tes vecteurs ? Tu n'a pas moyen de transformer tes vecteurs pour les simplifier / plus de zéro ? (diagonalisation, toussa)
Marsh Posté le 22-10-2007 à 11:42:42
ReplyMarsh Posté le 22-10-2007 à 11:43:15
dans boost::io_streams y a un surcharge de stream qui zip en automatique aussi.
Marsh Posté le 22-10-2007 à 11:44:24
Un jour j'arriverai à convaincre ma boîte d'installer boost
Marsh Posté le 22-10-2007 à 11:50:03
ReplyMarsh Posté le 22-10-2007 à 15:53:04
ouaip je vais regarder ca
j'ai trouvé ca aussi : http://michael.dipperstein.com/bitlibs/
ca devrait le faire
Marsh Posté le 22-10-2007 à 09:33:12
Hello tout le monde,
Je suis plutot débutant en programmation et pour un programme perso je dois sauvegarder (pour relire par la suite) des données dans un fichier en quantité très importante.
Je dois sauvegarder un X fois un vecteur de 800 valeur.
j'utilise pour celà une boucle sur : fichier.write(_valueSolution[i],2);
Celà marche niquel : j'obtiens un fichier de 1600 octet pour 1 vecteur.
J'aimerai gagner de la place car si je dois sauvegarder 1 000 000 de fois ce vecteur je vais être à 1.6Go !!
J'ai donc penser écrire bit à bit ce vecteur, mais comme la fonction .write n'accepte que d'écrire au minimum 1 octet celà veut dire que je vais devoir tout manipuler bit à bit...
Pour info les valeurs du vecteur sont de deux "types" : soit elles sont comprises entre 0 et 25, soit entre 0 et 258.
Je pensais donc mettre à la suite, soit des groupes de 5 bits, soit de 9 bits suivant le type de valeur à sauvegarder.
Peut etre y a t il d'autres moyen que je ne connais pas.... Qu'en pensez vous ?
Merci