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 :

Allocation mémoire optimisée au niveau bit


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut Allocation mémoire optimisée au niveau bit
    Bonjour,
    J'aimerais savoir si vous savez si il existe une fonction d'allocation qui soit optimisée au niveau des bits. Je m'explique : habituellement, quand je déclare int i = 5 par exemple, je n'utilise que 3 bits sur les 32 (ou 64 ). Existe t'il une fonction d'allocation qui me permettrai de récuperer les 29 bits restant pour d'autres allocations ? Ayant déja beaucoup cherché sans succes je pense ecrire cette fonction moi meme, mais cela me semble assez compliqué , car il me faudrait utiliser des masques pour récuperer les differentes valeur stockées dans un mot mémoire. Qu'en pensez vous ?
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    Je pense que plutôt que d'utiliser le surplus, il faudrait commencer par faire un code le plus "mince" possible.

    Dans ton exemple du int, utiliser plutôt un short.

    Après je ne sais pas s'il existe des fonctions pour récupérer les espaces non utilisés, mais je ne pense pas.

    Pour réaliser cette fonction, il faudrait utiliser des listes chaînées je pense si tu veux stocker des données à cheval sur deux espaces mémoires, donc au final je ne sais pas si tu gagnes vraiment de la place.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    BSans :
    Pour réaliser cette fonction, il faudrait utiliser des listes chaînées
    le(s) pointeur(s) de chainage risque(nt) de faire perdre plus de place mémoire qu'on peut espérer en gagner.

    wilder :
    J'aimerais savoir si vous savez si il existe une fonction d'allocation qui soit optimisée au niveau des bits.
    Rien de standard.
    Au niveau des bits, il n'y a guère que les champs de bits des structures (mais attention à la portabilité) et la gestion personnalisée de masques (solution probablement préférable).

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    plus généralement, avant d'envisager ce genre de choses (extrêmes) il faut d'abord savoir optimiser son code et ses variables..

    Si vraiment l'usage de la mémoire devient un problème insurmontable, penser éventuellement à ce genre de choses..

    Est-ce le cas ??

    J'ai plutôt l'impression que le PO (comme pour de l'optimisation de code où beaucoup pensent que cela passe par optimiser les if ou autres choses) pense gagner en faisant ce genre de manips dans un cas "ordinaire"...

    Et pour ce genre de cas c'est à proscrire (non portabilité, lisibilité médiocre voire difficile), sauf à utiliser des short ou des char (si on ne dépasse pas 255).

    Pour représenter tous les entiers de 1 à 255 un char convient tout à fait.. Et on a déjà économisé 3 octets..

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Pour représenter tous les entiers de 1 à 255 un char convient tout à fait.. Et on a déjà économisé 3 octets..
    Ca suppose que char est unsigned par defaut, ce qui n'est pas toujours le cas. Le standard garantit que char peut contenir des valeurs jusqu'a 127 uniquement.
    De plus, utiliser un char pour faire un "petit entier" va entrainer des tas de conversions de char vers int.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    oui mais si la place de stockage est importante..

    D'autre part qu'il soit signé ou non, au pire on ira de -127 à +128.. Il y a toujours 255 valeurs... Ou alors faut que je révise fondamentalement la noton de bit et d'octets...

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par diogene Voir le message
    Au niveau des bits, il n'y a guère que les champs de bits des structures (mais attention à la portabilité) et la gestion personnalisée de masques (solution probablement préférable).
    Tant qu'il s'agit de mémoire interne, il n'y a pas de problèmes de portabilité. Les problèmes apparaissent si on fait des interfaces avec des champs de bits (mémoire physique, fichiers, réseau etc.). là, effectivement ce n'est pas portable.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut
    Merci de vos avis. Je pense que je vais réfléchir encore un peu avant de me lancer, bien sur je comprend que ce soit a faire en dernier lieu, mais je vais quand meme le faire au moins pour voir le résultat.

Discussions similaires

  1. Optimisation allocation mémoire ?
    Par atha2 dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2012, 13h51
  2. Réponses: 11
    Dernier message: 21/08/2012, 16h57
  3. Réponses: 6
    Dernier message: 23/02/2007, 21h20
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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