GNT sans publicité, site mobile, fonctionnalitées exclusives...

"Compresser" les clés d'un hash

Le
JalaL
Bonjour a tous,

J'ai un serieux probleme avec un gros hash auquel je dois ajouter de
nouvelles valeurs pendant l'execution du programme.

Le hash est sous forme de %hash->{$url} = $url_id;

Pour le reduire, j'ai utilisé Digest::MD5. En encodant les URLs, parfois
trop longues, et parfois trop courtes en 32 characteres j'arrive a reduire
la taille totale (length) de toutes les clés à 1/3 de la taille originale
(sans md5). Ce qui est déjà une belle performance.

Inutile d'utiliser Compress::Zlib::memGzip parce qu'en plus de sa leuteur
elle augmente la taille totale des clés.

J'aimerai savoir s'il y a un autre moyen plus efficace et plus performant
que MD5 pour reduire la taille des clés tout en conservant la structure du
hash et des clés uniques.
Lire les 14 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JalaL
Le #135321
"JalaL" 45927ea9$0$8236$
Bonjour a tous,

J'ai un serieux probleme avec un gros hash auquel je dois ajouter de
nouvelles valeurs pendant l'execution du programme.

Le hash est sous forme de %hash->{$url} = $url_id;

Pour le reduire, j'ai utilisé Digest::MD5. En encodant les URLs, parfois
trop longues, et parfois trop courtes en 32 characteres j'arrive a reduire
la taille totale (length) de toutes les clés à 1/3 de la taille originale
(sans md5). Ce qui est déjà une belle performance.

Inutile d'utiliser Compress::Zlib::memGzip parce qu'en plus de sa leuteur
elle augmente la taille totale des clés.

J'aimerai savoir s'il y a un autre moyen plus efficace et plus performant
que MD5 pour reduire la taille des clés tout en conservant la structure du
hash et des clés uniques.



Pour optimizer encore plus, je voulais MD5er les URLs plus longues que 32
caracteres seulement, les autres URLs plus courtes seront stockées sans
modification. je pensais faire mieux mais non... un peu bizare.

Bah c'est là que je decouvre que MD5 donne un hash de 16 caracteres
seulement. Ca permet d'economiser quelques Ko de memoire, et a long terme ca
economisera quelques centaines de Ko voire quelques Mo.

Je cherche toujours a faire mieux, vos suggestions sont les bienvenues.

Nicolas George
Le #135320
"JalaL" wrote in message
economisera quelques centaines de Ko voire quelques Mo.


Autant dire rien dans la plupart des situations courantes.

Je cherche toujours a faire mieux, vos suggestions sont les bienvenues.


Décrire ce que tu veux faire au final, et pas les moyens techniques que tu
mets en oeuvre pour y parvenir.

JalaL
Le #135319
"Nicolas George" news: 4592a168$0$25425$
"JalaL" wrote in message
economisera quelques centaines de Ko voire quelques Mo.


Autant dire rien dans la plupart des situations courantes.

Je cherche toujours a faire mieux, vos suggestions sont les bienvenues.


Décrire ce que tu veux faire au final, et pas les moyens techniques que tu
mets en oeuvre pour y parvenir.


Faut lire un peu ce que j'ai ecrit !!!

J'aimerai savoir s'il y a UN AUTRE MOYEN plus efficace et plus
performant que MD5 pour reduire la taille des clés tout en conservant la
structure du hash et des clés uniques.


Si je continu mes recherches en parallele c'est just pour ne pas attendre 3h
une reponse de ce genre.


Nicolas George
Le #135318
"JalaL" wrote in message
Faut lire un peu ce que j'ai ecrit !!!


J'ai lu : tu veux bidouiller des hashes de hashes d'URL pour que ça prenne
moins de place, mais tu ne dis pas ce que tu veux faire avec.

JalaL
Le #135317
"Nicolas George" news: 4592ae08$0$30302$
"JalaL" wrote in message
Faut lire un peu ce que j'ai ecrit !!!


J'ai lu : tu veux bidouiller des hashes de hashes d'URL pour que ça prenne
moins de place, mais tu ne dis pas ce que tu veux faire avec.


Pouvoir chercher dans le hash l'identifiant d'une URL, si l'URL n'existe pas
je la rajoute avec son identifiant. L'identifiant c'est un entier que
j'incremente en cas de nouvelle URL. Ca m'evitera d'utiliser une base de
données ou un fichier texte.


Publicité
Suivre les réponses
Poster une réponse
Anonyme