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 :

Compresser la mémoire utilisée par un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 11
    Par défaut Compresser la mémoire utilisée par un programme
    Salut à tous !

    Actuellement en stage en entreprise, on m'a filé un programme C et on m'a demandé de réduire la mémoire utilisée par ce dernier, qui est actuellement de 98%.

    Bon j'adore le C, mais n'étant qu'en 2°A de DUT GEII, je n'ai pas ces compétences. Je suis donc parti à la recherche d'infos sur internet, mais ça prend du temps donc je viens ici pour avoir un complément, en espérant que vous puissiez m'aider !

    Merci de votre aide !

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par RedArrrow Voir le message
    on m'a filé un programme C et on m'a demandé de réduire la mémoire utilisée par ce dernier
    moi en lisant ça j'aurais plutot tendance à me pencher sur le code pour essayer de l'optimiser (algorithmiquement) plutot que de vouloir compresser la mémoire

    d'ailleurs au mieux ce sont les données qu'on compresse, pas la mémoire, et si ce sont des données utiles au programme ça veut dire que la compression/décompression plus ou moins régulière va engendrer un coût en terme de charge CPU, à voir si c'est vraiment ça qu'on te demande...

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 11
    Par défaut
    Ok alors après être allé sur plusieurs forums je me suis rendu compte que je n'avais pas été assez clair.
    En fait je parle d'un programme, qui tourne sur un PIC18 implanté sur une carte électronique.
    Le programme est directement chargé depuis MPLAB via usb sur le PIC (donc pas accès à un exe), et occupe 98% de la mémoire du PIC.
    Ma tâche est de réduire le code pour qu'il prenne moins de place.

    On m'a déjà parlé de padding et d'allocations dynamiques.
    En espérant que tu en ai encore plus à m'apprendre !

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par RedArrrow Voir le message
    (...) PIC18 (...) carte électronique (...) MPLAB (...)
    En espérant que tu en ai encore plus à m'apprendre !
    désolé non (effectivement des précisions s'imposaient)

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 11
    Par défaut
    Bon tant pis, merci quand même !

    Pour les nouveaux arrivant, je reste ouvert à toute proposition !

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Regarde dans le forum developpement systeme, il y a une section micro controleurs.

    Vérifie déjà que tu compiles le programme en optimisation pour l'espace.

    Dans tous les cas, améliorer les algorithmes du code devrait permettre de réduire le programme.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RedArrrow Voir le message
    Le programme est directement chargé depuis MPLAB via usb sur le PIC (donc pas accès à un exe), et occupe 98% de la mémoire du PIC.
    Ma tâche est de réduire le code pour qu'il prenne moins de place.
    Bonjour

    Il n'y a pas de méthode miracle pour réduire un code. C'est un truc qu'on fait au cas par cas. D'autant plus que maintenant les compilateurs savent optimiser pas mal de truc.

    Citation Envoyé par RedArrrow Voir le message
    On m'a déjà parlé de padding et d'allocations dynamiques.
    En espérant que tu en aies encore plus à m'apprendre !
    L'allocation dynamique éventuellement. Effectivement si le programmeur précédent a défini un tableau de 100000 items (pour être sûr que tout rentre) et qu'il n'est rempli qu'au tiers, alors ça peut-être intéressant de n'allouer que 40000. Mais dans ce cas, c'est à toi de gérer l'allocation/reallocation du tableau lors du remplissage ce qui impose alors un travail rigoureux.
    Le padding c'est essayer d'aligner une structure sur une valeur précise (généralement puissance de 2) afin que le déplacement entre différentes variables de cette structure soit plus rapide. C'est surtout utile quand on a des tableaux de structures. Ca optimise l'accès à tab[i]. Mais est-ce que les compilos ne le font pas déjà tout seul...?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 11
    Par défaut
    D'autant plus que maintenant les compilateurs savent optimiser pas mal de truc.
    T'es en train de me dire que je vais devoir annoncer à mon maître de stage que je ne lui ai fais gagner qu'un pourcent ?

    Bon ben je vais devoir me concentrer sur le padding et l'allocation dynamique si j'ai bien compris.

    Merci pour ta réponse !

  9. #9
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Tu vas devoir comprendre ce qui prend de la place.
    Et c'est ca qu'il faudra optimiser.

    Avec un debugger, tu pourrais avoir des informations.
    Bon courage!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mémoire utilisée par un programme c++
    Par xavierdestev dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/01/2014, 21h13
  2. mémoire maximale utilisée par un programme
    Par xavierdestev dans le forum Débuter
    Réponses: 4
    Dernier message: 26/12/2013, 22h53
  3. Mémoire utilisée par un programme
    Par Deamon dans le forum Général VBA
    Réponses: 2
    Dernier message: 13/05/2009, 11h41
  4. Utilisation de la mémoire vive par un programme
    Par Pixcoder dans le forum C++
    Réponses: 13
    Dernier message: 25/09/2006, 12h36

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