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 :

Comment avoir un oeil sur la mémoire utilisée ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 150
    Par défaut Comment avoir un oeil sur la mémoire utilisée ?
    Bonsoir,

    Pourriez-vous m'indiquer comment procédez-vous pour évaluer la mémoire lors de l'execution d'un programme ? Lorsque j'écris des programmes, je voudrai être certains que toute la mémoire est bien libérer, qu'il n'y a pas de fuite, malloc de bonne taille, etc ...

    Merci pour vos conseils.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 160
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Sous Linux on utilise valgrind. Sous Windows, on peut essayer Dr Memory. Ils vont surveiller tous les accès mémoire et faire un rapport sur l'exécution du programme.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 497
    Billets dans le blog
    1
    Par défaut
    Pour l'utilisation de dr memory : http://www.developpez.net/forums/d12...ows-and-linux/

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 150
    Par défaut
    Bonsoir,

    Merci pour vos réponses.
    J'ai une autre question touchant à l'optimisation, généralement est-il préférable de stocker plus de donnée quitte à ce qu'elle ne soit utiliser que dans un unique cas ( quelques cas ) ou au contraire faire appel à ces données le moment venu sachant que quoi qu'il en soit j'aurai besoin des données minimum une fois.
    Au cas ou que ce ne soit pas assez claire, un cas concret :

    Je veux récupérer des caractéristiques d'un fichier, disons que j'utilise la fonction stat ( man 2 stat ). J'ai besoin d'au minimum un des champs ( peut importante ), cependant dans certains cas j'ai besoin de d'autres champ ( cela peut varier en fonction des arguments du main ) est il préférable de tous les stocker dans ma structure ? de stocker carrément la structure que me renvois stat ? de rappeler stat au moment venu afin d'utiliser les données dans l'immédiat ?

    En plus simple, est-ce moins performant de stocker des données ou de remplir plusieurs fois une structure ? ( exemple ci-dessus ).

    Merci pour votre partage d'expérience.

    Bonne soirée.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 497
    Billets dans le blog
    1
    Par défaut
    Il n'y a pas vraiment de réponse à la question. Comme souvent en informatique (en tout cas en environnements contraints, comme ceux sur lesquels je travaille), c'est un compromis à trouver en consommation mémoire et consommation CPU. Si tu as plein de RAM et que tu veux que ça aille vite, tu stockes beaucoup en RAM ; si tu as peu de RAM, tu ne stockes pas trop et tu consommes du CPU, de temps en temps, pour aller chercher les données dont tu as besoin.

    Il y a une autre règle en informatique : toute optimisation prématurée est l'origine du mal. Code quelque chose de simple et qui fonctionne bien. Fais quelque chose de logique. Par exemple, "j'ai besoin de stat( ) une fois tous les 36 du mois, j'appelle stat() et je ne stocke pas". "J'ai besoin d'aller interroger un serveur pour avoir des données quasi-invariantes (resp. très changeantes), ça prend 1 minute à chaque interrogation, alors j'interroge une fois et je stocke (resp. j'interroge à chaque fois)".

    Il s'agit bien sûr de ne pas être trop naïf en faisant tout ça. Quand ça fonctionne bien, tu regardes les performances. Si elles correspondent à tes attentes (en terme de consommations mémoire et CPU), alors tu t'arrêtes là. Sinon, tu utilises des outils de profilage pour déterminer l'origine des problèmes et les résoudre.

  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
    Insistons bien.

    On n'optimise qu'un programme fini, et en utilisant un profileur.
    Seul un profileur saura dire quel code est utilisé en permanence, et devrait être optimisé.

    Toute autre attitude n'apporte qu'un programme non maintenable, et insuffisament voire contre-optimisé

Discussions similaires

  1. Comment avoir des div sur une même ligne sans utiliser float ?
    Par Sergejack dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 13/10/2007, 15h31
  2. [Forum][Conseil] Comment avoir un forum sur mon site ?
    Par jessi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/11/2006, 21h07
  3. Comment avoir le WiFI sur WINDOWS 2000?
    Par chevy dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 07/03/2006, 14h50
  4. Comment avoir une référence sur une Vue
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 12/08/2005, 10h03
  5. Comment avoir des information sur une BD?…
    Par kikimnet dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/02/2005, 09h20

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