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 :

Sizeof d'une architecture d'objets


Sujet :

C++

  1. #1
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut Sizeof d'une architecture d'objets
    Bonjour,

    Je programme avec Visual Studio 2005, et j'ai cr�� un petit projet qui commence � prendre de l'envergure.

    Parmi les objets que le programme manipule, certains sont imbriqu�s : un conteneur qui contient des boites, qui contiennent des objets...

    J'aimerais determiner la place occup�e en m�moire par le conteneur (par exemple).

    C'est � dire la place qu'il occupe lui + ses boites + les objets de ses boites....

    Vu que c'est � des fins de tests, j'aimerais eviter d'implementer de nouvelles m�thodes, j'aimerais juste savoir si c'est possible de connaitre l'espace occup� gr�ce � un debuggeur ou quelque autre manip'

    Merci.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Pas � ma connaissance, � moins de passer par des op�rateurs d'allocation sp�ciaux, et monopoliser un des "types de bloc" (il me semble qu'il n'y en a pas plus de seize disponibles) pour �a...

    En C++, tu auras plus vite fait de faire ta propre fonction de comptage de taille...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut
    Oui, probablement...

    Je comptais sur une fonctionnalit� m�connue du debuggeur ou un truc de ce genre...

    Tant pis !

  4. #4
    Membre �clair� Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par d�faut
    pour une estimation tu peux utiliser les task manager. Tu fais une version du prog sans instancier la taille que tu veux mesur�r et un autre avec.
    Puis la differwences des deux resultats te donneras une approximation.

    Sinon tu sera obliger de faire de nouvelles methodes. / de coder

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par ZaaN
    pour une estimation tu peux utiliser les task manager. Tu fais une version du prog sans instancier la taille que tu veux mesur�r et un autre avec.
    Puis la differwences des deux resultats te donneras une approximation.

    Sinon tu sera obliger de faire de nouvelles methodes.
    tres large comme estimation, car le task manager ne donne pas la m�moire allou�e a un instant donn�e mais une partie de la m�moire r�serv�e...

    le plus judicieux pour estimer la taille de son conteneur est de faire qqchose comme ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
      sizeof(conteneur) // taille du conteneur vide
    + sizeof(boites) * conteneur.size()  // n fois la taille d'une boite
    + sizeof(objet) * conteneur.size()   // n fois la taille d'un objet dans la boite
    bien sur, ceci est tres vague. je suppose ici qu'une boite ne comprend qu'un seul objet a la fois, qu'un conteneur r�f�rence ses boites par pointeurs, et encore (sans parler que je ne factorise pas mon code)... il faudrait connaitre l'existant plus pr�cisemment pour faire un algo qui tienne la route. mais ca donne une id�e...

  6. #6
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut
    toxcct :

    C'est evidemment la meilleure solution.

    Et c'est celle que j'ai implement�e. Vu que c'�tait juste pour faire quelque tests, je voulais eviter d'ajouter du code un peu partout dans mon programme.

    Mais maintenant, c'est fait.

  7. #7
    Membre �clair� Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par d�faut
    Citation Envoy� par toxcct
    tres large comme estimation, car le task manager ne donne pas la m�moire allou�e a un instant donn�e mais une partie de la m�moire r�serv�e...
    Pourtant j ai des resultats, certe pas exact dans l'absolu, mais si mon programme instancier durant don execution les differences relatives sont tres precises...

    Alors experience faites, ca donne un bonne estimation

  8. #8
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut
    Oui, sauf que mon logiciel est u plugin sous forme de DLL charg� dans un logiciel h�te.

    Ca devient difficile de faire la difference entre la memoire prise par l'hote, la memoire prise par le plugin et la memoire allou�e par l'hote au chargement du plugin pour lui fournir des buffers de travail...

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Hum...
    Je pense avoir trouv� un moyen en surchargeant l'op�rateur new, et en utilisant plusieurs tas.
    S'inspirer un peu de cet exemple : How to overload new to reduce memory fragmentation

    Voir ces fonctions:
    HeapCreate()
    HeapSize()
    HeapWalk()
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut
    Effectivement, pour mettre en place une solution g�n�rique �a me parait la meilleure solution.

    Au passage, fort interressant cet article, dans mon code il arrive que je cr�e un grand nombre d'objets de petite taille...

    Surcharger "new" et "delete" peut etre une bonne piste pour reduire la consommation de m�moire tout en s'assurant que les objets sont allou�s dans des zones m�moires tr�s proches pour eviter les ruptures de cache lorsque je les traite tous "� la suite".

  11. #11
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Si le sujet t'int�resse (g�rer efficacement les allocations d'objets de petite taille), il y a �galement une solution portable d�crite dans le livre Modern C++ design, et impl�ment�e dans la biblioth�que Loki.

  12. #12
    Membre �clair�
    Avatar de buzzkaido
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par d�faut
    ah !

    C'est bon � savoir, �a !

    Merci.

Discussions similaires

  1. Cr�er une architecture objet pour une appli
    Par thor76160 dans le forum NodeJS
    R�ponses: 2
    Dernier message: 02/05/2013, 23h25
  2. R�ponses: 12
    Dernier message: 03/07/2009, 13h37
  3. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et ant�rieur
    R�ponses: 7
    Dernier message: 19/09/2003, 11h58
  4. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    R�ponses: 10
    Dernier message: 28/07/2003, 12h11
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et ant�rieur
    R�ponses: 15
    Dernier message: 02/09/2002, 08h55

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