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

Langage C++ Discussion :

Réduire capacité vector


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 60
    Par défaut Réduire capacité vector
    Bonjours amis développeurs....
    Je suis sur un gros projet de développement en c++...Je suis accro de tout ce qui est optimisation dans le code....Ce qui me dérange un peu :
    Quand je fais sizeof(std::vector<double>) j'obtiens 20 octets....
    Y a t-il un moyen de réduire la taille ??
    Je vous avoue j'ai pas le temps de chercher (c-a-d regarder dans le fichier vector de la STL) c'est pourquoi je demande votre aide....
    A mon avis il doit y avoir plein de macros pour pouvoir optimiser la taille car
    normalement vector posséde 3 pointeurs (donc 4octets x 3 =12 octets)....
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Avant toutes chose:
    premature optimization is the root of all evil
    The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet
    Bref, avant d'optimiser, il faut mieux faire quelque chose qui marche. Un programme qui plante/ne fait pas ce qu'on lui demande rapidement ne sert à rien. Un programme qui fait ce qu'on attend de lui lentement est beaucoup mieux. En effet il est plus facile d'optimiser à postériori quelque chose qui marche que de corriger un programme optimisé ne fonctionnant pas correctement.

    Sinon, c'est quoi le but de ta question ? Pourquoi vouloir réduire la taille de std::vector ? J'avoue ne pas cerner ton but.

    normalement vector posséde 3 pointeurs (donc 4octets x 3 =12 octets)....
    Tu te bases sur quoi pour dire ca ? J'ai rien vu de tel dans la norme ni dans la doc.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    J'appuie à 1000% ce que dit David : optimiser trop tôt est une erreur.
    J'ajouterais que sont les 20 ou 12 octets (qui sont des détails d'implémentation) par rapport aux données contenus par le vecteur ? Rien ? alors soucis-toi plutôt des données que tu mets dedans. Trop ? alors c'est que ce n'est peut être pas le conteneur approprié.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 60
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Avant toutes chose:
    Tu te bases sur quoi pour dire ca ? J'ai rien vu de tel dans la norme ni dans la doc.
    Le conteneur vector a 3 membres qui sont tous des pointeurs......

    Vous inqiétez pas, je suis du genre à tester immédiatemment toute fonction...Sinon je n'ai aucun souci.....je suis juste un peu maniac....
    Alors quelqu'un sait comment réduire la taille en octets d'un std::vector<T>
    Vous pouvez jetez un coup d'oeil ici pour plus d'infos sur le sujet :
    http://social.msdn.microsoft.com/For...9-5cd311bc21c4
    Merci

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Le conteneur vector a 3 membres qui sont tous des pointeurs......
    Ce qu'essayait de te dire David c'est que c'est implémentation dépendant, et que rien ne te le garantie. (même si oui c'est la pratique "courante").

    Et non y'a pas de macro-foo pour optimiser. (y'a pas besoin).

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par nasboy3d Voir le message
    Le conteneur vector a 3 membres qui sont tous des pointeurs......
    C'est dans quelle ligne de la norme ? C'est impliqué par quel service de std::vector ? Moi j'ai des résultats différents selon les compilateurs que je prend.

    Citation Envoyé par nasboy3d Voir le message
    Vous pouvez jetez un coup d'oeil ici pour plus d'infos sur le sujet :
    http://social.msdn.microsoft.com/For...9-5cd311bc21c4
    Cette discussion dit exactement la même chose que nous :
    1/ C'est un détail d'implémentation de la STL qui varie d'un compilateur à l'autre et ;
    2/ si c'est problématique pour ton application parce que tu as beaucoup de vecteur alors c'est que tu as un soucis dans ta conception.
    Donc, je t'invite aussi à lire le lien que tu nous fournis et d'en comprendre les réponses.

    Citation Envoyé par nasboy3d Voir le message
    Alors quelqu'un sait comment réduire la taille en octets d'un std::vector<T>
    En se posant les bonnes questions : la taille d'un sdt::vector est trop importante par rapport à tes données => tu n'as pas besoin de ce conteneur. La taille de std::vector est négligeable par rapport aux données du tableau => alors c'est un faux problème.


    [EDIT] : en plus qui te dit que les 4 pointeurs ne pointent pas sur des structures au total plus petite qu'une autre implémentation qui n'aurait que 3 pointeurs ? Ta question me semble n'avoir vraiment aucun sens.

Discussions similaires

  1. Vector : constructeur pour la capacité
    Par david lefaivre dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2012, 23h06
  2. Réponses: 2
    Dernier message: 17/09/2003, 09h36
  3. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21
  4. Réponses: 2
    Dernier message: 11/07/2003, 18h24
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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