
Envoyé par
fcharton
Je ne connais pas tes données, donc je ne peux juger.
Néanmoins, il est rare qu'il n'y ait plus moyen de "chipoter" sur la taille des données. Si les valeurs prises par tes variables ont une distribution non uniforme sur l'ensemble de tes données, ou si elles sont corrélées entre elles, tu peux exploiter ce fait pour les coder de manière plus compacte. Par exemple, un booléen qui prend très rarement la valeur true peut être codé sur nettement moins d'un bit en moyenne (regarde du coté du codage arithmétique), une variable prenant en théorie 256 valeurs, mais statistiquement très souvent faible peut également être compactée, des champs corrélés entre eux (logiquement ou statistiquement) seront généralement mieux représentés ensemble que séparés, etc...
Cela peut représenter un gros gain en espace utilisé (un ordre de grandeur, parfois, si tes données sont "assez peu aléatoires"...) Et si tu utilises déjà des structures qui décodent des données bit à bit, il est même possible que ces méthodes ne ralentissement pas beaucoup ton code (la plupart de ces méthodes de compression reposent sur de l'arithmétique binaire, chose que les machines font généralement vite).
Maintenant, ce genre de chose est difficile à coder, et surtout à tester. A mon avis, il faut mettre le temps de développement en balance avec le cout (en argent et en temps) du passage à un système ayant davantage de mémoire...
Francois
Partager