stockage bit à bit ???

stockage bit à bit ??? - C++ - Programmation

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  :jap:

Reply

Marsh Posté le 22-10-2007 à 09:33:12   

Reply

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.

Message cité 1 fois
Message édité par Elmoricq le 22-10-2007 à 10:29:51
Reply

Marsh Posté le 22-10-2007 à 10:52:23    

Elmoricq a écrit :

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.


 
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 ?

Reply

Marsh Posté le 22-10-2007 à 11:25:48    

Tu ne peux pas diviser en plusieurs fichiers?

Reply

Marsh 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)

Reply

Marsh Posté le 22-10-2007 à 11:42:42    

IrmatDen a écrit :

Tu ne peux pas diviser en plusieurs fichiers?


Aucun intérêt

Reply

Marsh Posté le 22-10-2007 à 11:43:15    

dans boost::io_streams y a un surcharge de stream qui zip en automatique aussi.

Reply

Marsh Posté le 22-10-2007 à 11:44:24    

Un jour j'arriverai à convaincre ma boîte d'installer boost [:zytrasnif]

Reply

Marsh Posté le 22-10-2007 à 11:50:03    

Reply

Marsh Posté le 22-10-2007 à 15:53:04    


:jap: ouaip je vais regarder ca
 
j'ai trouvé ca aussi : http://michael.dipperstein.com/bitlibs/
ca devrait le faire :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed