Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2335 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [résolu] efficacité avec les containers STL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] efficacité avec les containers STL

n°1839698
miq75
Posté le 18-01-2009 à 17:20:34  profilanswer
 

Bonjour,
 
Un petit problème me turlupine :
 
Je fais une bibliothèque permettant de créer des programmes qui posent des problèmes de complexité (temps d'execution). Je dois déplacer en temps critique des objets d'un vecteur à l'autre.
 
Si j'ai bien compris, un conteneur STL tel que vector<MonObjet> crée une copie de l'objet quand on lui en ajoute un, et efface sa copie quand on le retire.
Dans mon cas, il est donc intéressant du point de vue temps d'execution, bien que plus lourd pour l'ecriture de code, d'utiliser vector<MonObjet*> à la place. Ainsi, mes opérations durerons le temps de la copie d'un pointeur au lieu de celui de la copie d'un objet.
 
Ais-je raison ?


Message édité par miq75 le 18-01-2009 à 18:18:21
mood
Publicité
Posté le 18-01-2009 à 17:20:34  profilanswer
 

n°1839699
0x90
Posté le 18-01-2009 à 17:26:47  profilanswer
 

Tu as raison de dire que ça prendra moins de temps.
 
Tu as tort quand tu confonds complexité et temps d'exécution, et le passage de MonObjet à MonObjet* ne changera pas la complexité (enfin, à moins que dans ton MonObjet l'opération de copie ne sont pas en O(1)).


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1839703
Joel F
Real men use unique_ptr
Posté le 18-01-2009 à 17:36:43  profilanswer
 

compelxité != tems d'exécution.
Si tu veut des perf regarde du coté de boost::intrusive ou de boost::pointer_container

n°1839704
miq75
Posté le 18-01-2009 à 17:42:09  profilanswer
 

Ok, merci pour la confirmation.
(Comme quoi la STL ne permet pas de se passer dans tous les cas des pointeurs. Dommage.)
 
Merci aussi pour la précision sur la complexité. En fait, je parlais de la complexité «en» temps d'execution pour la différencier de celle en volume de stoquage.  

n°1839705
Joel F
Real men use unique_ptr
Posté le 18-01-2009 à 17:51:43  profilanswer
 

sauf que la complexité != temps d'exécution attention.

n°1839707
_darkalt3_
Proctopathe
Posté le 18-01-2009 à 17:55:31  profilanswer
 

miq75 a écrit :

Ok, merci pour la confirmation.
(Comme quoi la STL ne permet pas de se passer dans tous les cas des pointeurs. Dommage.)
 
Merci aussi pour la précision sur la complexité. En fait, je parlais de la complexité «en» temps d'execution pour la différencier de celle en volume de stoquage.  


La complexité au sens où JoelF l'entend


---------------
Töp of the plöp
n°1839709
miq75
Posté le 18-01-2009 à 18:05:24  profilanswer
 

J'avais suivi. (C'est celle que j'appelle, moi, complexité EN temps d'execution, bien qu'elle n'en soit qu'un indice)
 
Merci pour vos réponses rapides.

n°1839725
Joel F
Real men use unique_ptr
Posté le 18-01-2009 à 18:38:32  profilanswer
 

oui mais non mais c'est pas grave :o

n°1839779
frenchtouc​co
Posté le 18-01-2009 à 20:44:20  profilanswer
 

Joel F a écrit :

compelxité != tems d'exécution.
Si tu veut des perf regarde du coté de boost::intrusive ou de boost::pointer_container


 
Est ce qu'un std::container (e.g:std::vector) stockant des objets boost::scoped_ptr peut être équivalent à un boost::pointer_container en terme de perf ?
 
Aprés peut être qu'il existe des différences niveau exception-safe thread-safe, copyable ou non ou je sias pas quoi d'autre


Message édité par frenchtoucco le 18-01-2009 à 20:45:06

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1839780
frenchtouc​co
Posté le 18-01-2009 à 20:47:18  profilanswer
 

et également comparé à un Boost.Intrusive  , toujours en terme de performance


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 18-01-2009 à 20:47:18  profilanswer
 

n°1839781
Joel F
Real men use unique_ptr
Posté le 18-01-2009 à 20:57:47  profilanswer
 

aucune idée, lire la doc aidera je pense

n°1839787
Taz
bisounours-codeur
Posté le 18-01-2009 à 22:49:40  profilanswer
 

Joel F a écrit :

aucune idée, lire la doc aidera je pense


faut pas non plus enculer les mouches, si t'es sur du refcount, y a un moment tu peux pas descendre. les intrusives c'est pour les bousins qui ont déjà un compteur intégré.
pointer_container c'est du sucre.

 


Je m'étonne beaucoup de ce topic, tu dis que t'as un problème de perf alors que tu ne maitrises pas le structure de données de base de la STL. Si ça se trouve t'as pas le scientist de base qui code son algo N^3 en N^5 parce que t'as choisi les mauvaises structures données sans y réfléchir. Genre une vector au lieu d'une list, etc


Message édité par Taz le 18-01-2009 à 22:53:15
n°1839788
Taz
bisounours-codeur
Posté le 18-01-2009 à 22:54:25  profilanswer
 

miq75 a écrit :

(Comme quoi la STL ne permet pas de se passer dans tous les cas des pointeurs. Dommage.)

Bah si, un pointeur c'est un type comme un autre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [résolu] efficacité avec les containers STL

 

Sujets relatifs
[Résolu] Inclure les dll Qt dans l'executable.[Resolu] Comment faire une zone cliquable de forme polygonale?
[Résolu] Comment lister plusieurs contenus de dossiers sur une page ?[RESOLU]Content-types et upload d'image - Librairie GD
HTTP_USER_AGENT ie vista (résolu)[resolu] [ajax/mootools] problème Fx.Tween ?
[C++] RESOLU - Imprimer la valeur d'un pointeur sans le prefixe 0x?problème de HashMap résolu, mais besoin d'explications, bug JAVA ?
[Résolu] Récupération de mails en Imap et sauts de ligne 
Plus de sujets relatifs à : [résolu] efficacité avec les containers STL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR