IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Manipulation de données hexadecimales


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Manipulation de données hexadecimales
    bonjours a tous.

    mon sujet est le suivant:

    j'ai extrait d'un fichier binaire son contenu et je l'ai converti en hexadecimal. Je me retrouve donc avec des milliers de donnees hexadecimale que je doit stocker (en memoire ou dans un fichier) pour pouvoir les utiliser; En bref, je dois parcourir ces donnes de la facon suivante:
    recuperer la valeur qui corespond a l'offset 5600 (offset=position dans le fichier hexa)
    et a la taille de 128 caracteres).

    tout cela j ai reussi a le faire un stockant le contenu converti (hexa) dans une map qui contient en string une valeur par index: ex: map[5600]=C4 ect...

    Le problème que j'ai rencontré est que le traitement est très lourd!! plus de 4 minutes pour s'executer vu l'ampleur des données a analyser.

    comment je pourrai arranger mon programme ou ma facon de traiter ce cas pour ameliorer ce temps de traitement ?? la maniputlation d'une map de plusieur centaine de millier d'index peut il etre remplacé par autre chose ???

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Essaie de changer la clé de ta map, les comparaisons avec des std::string sont plus lourdes d'autant que passées par valeur !

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Je ne fais pas de comparaison avec les std::string qui sont pour moi les informations a recuperer dans la map. moi je cherche par exemple l'id 50 de la map qui est un int puis je recupere la valeur corespondante.

    Est ce ke tu c si si, dans une map, je cherche la clé 100000 par exemple, l'ensemble des 100000 premier index vont etre parcouru ou est ce kon pointe directement sur l'index 100000 de la map?? cela pourrai etre je pense la cause d'un tel ralentissement d'execution de mon programme

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Est ce ke tu c si si, dans une map, je cherche la clé 100000 par exemple, l'ensemble des 100000 premier index vont etre parcouru ou est ce kon pointe directement sur l'index 100000 de la map??
    Les std::map offrent un temps d'accès logarithmique.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    oki merci j abandonne l idee des map et je repar sur des tableau.

    juste une question, connai tu la difference entre un tableau declaré en static ou en dynamique.
    Que propose l'un par rapport a l autr ??

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    oki merci j abandonne l idee des map et je repar sur des tableau.
    Un temps logarithmique c'est tout à fait honorable. Un logarithme sur 100 000 éléments ça ne fait "que" 16.

    juste une question, connai tu la difference entre un tableau declaré en static ou en dynamique.
    Que propose l'un par rapport a l autr ??
    Tu peux préciser ? Dans quel contexte ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    si tu veux du O(1) faut utiliser une hashtable, du style std::hash_map ou std::tr1::unordered_map
    Boost ftw

  8. #8
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    juste une question, connai tu la difference entre un tableau declaré en static ou en dynamique.
    Que propose l'un par rapport a l autr ??
    Tout dépend du tableau.
    Pour les tableau classique:
    -statique:taille connue à la compilation;
    -dynamique:réservation de mémoire lors de l'éxécution avec possibilité de choisir la taille pendant l'exécution.

    Pour les vector je crois qu'ils sont forcément tout le temps dynamique.
    A confirmer.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par crazydede8
    Je ne fais pas de comparaison avec les std::string qui sont pour moi les informations a recuperer dans la map. moi je cherche par exemple l'id 50 de la map qui est un int puis je recupere la valeur corespondante.

    Est ce ke tu c si si, dans une map, je cherche la clé 100000 par exemple, l'ensemble des 100000 premier index vont etre parcouru ou est ce kon pointe directement sur l'index 100000 de la map?? cela pourrai etre je pense la cause d'un tel ralentissement d'execution de mon programme
    Mais la clé 100000, c'est quoi comme type de données, tu les stockes comment ?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par Miles
    Mais la clé 100000, c'est quoi comme type de données, tu les stockes comment ?
    Ca paraît clair

    l'id 50 de la map qui est un int

  11. #11
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Un logarithme sur 100 000 éléments ça ne fait "que" 16.
    C'est pas 12?
    C'est bien un logarithme népérien?
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Non, c'est un logarithme en base 2. En général en informatique tu auras le plus souvent des log en base 2, qui correspondent à des recherches dichotomiques ou dans des arbres binaires.

    Ceci-dit ce qu'il est important de retenir est que c'est un temps logarithmique, après je ne sais pas si le standard en impose plus que ça.

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ca paraît clair



    Bon, si vous me cherchez, je suis déjà dehors

Discussions similaires

  1. [C#] [ADO.NET] Manipulation de données
    Par Tips dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/02/2006, 16h28
  2. [VBA]SQL dans Excel manipulation de données
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/02/2006, 16h56
  3. manipulation de données
    Par philpaul dans le forum Access
    Réponses: 10
    Dernier message: 03/10/2005, 09h54
  4. Manipulation de données binaires
    Par Defre87 dans le forum Général Python
    Réponses: 3
    Dernier message: 28/09/2005, 16h16
  5. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo